我遇到了-nostartfiles
gcc-nostdlib
编译选项下的选项。但是,我不明白如何为上述选项编写代码。您是否需要编写每个启动函数(例如_start
等__libc_csu_init
)?
我可以获得这两个选项的简化代码以了解它的工作原理吗?
编辑:
另外我刚刚发现使用static
withnostartfiles
会抛出segmentation fault
. 一个简单的 c 代码来重现相同的内容:
#include<stdio.h>
#include<stdlib.h>
void _start()
{
int x = main();
exit(x);
}
int main()
{
printf("Hello world!\n");
return 0;
}
编译使用:
gcc -nostartfiles -static -o foo foo.c
上述代码的输出是一个segmentation fault
. 是预期的输出吗?