nostdlib在SDL中导致分段错误
当我使用gcc -nostartfiles或-nostdlib编译下面的代码时,在调用SDL_OpenAudio()时,运行生成的程序会导致音频系统内部发生崩溃。 如果没有这个调用,一切正常,甚至其他图书馆工作。 当编译时没有-nostartfiles / -nostdlib(并且将_start重命名为main并注释程序集出口调用)它工作正常。
我的问题:什么导致这种依赖于gcc启动代码,我怎样才能解决它,而不删除-nostartfiles / -nostdlib?
我使用gcc 4.7.2编译x86_64上的linux 64位
void _start()
{
SDL_AudioSpec fmt;
fmt.freq = 44100;
fmt.format = AUDIO_S16;
fmt.channels = 1;
fmt.samples = 4096;
fmt.callback = mixaudio;
fmt.userdata = NULL;
if ( SDL_OpenAudio(&fmt, NULL) < 0 ) SDL_Quit();
SDL_PauseAudio(0);
while(1){SDL_Delay(20);}
asm("xorq %rax, %rax n movq 42, %ebx n int 0x80");
}
链接地址: http://www.djcxy.com/p/79927.html
上一篇: nostdlib causes segmentation fault within SDL
下一篇: Does integer overflow cause undefined behavior because of memory corruption?