我似乎无法弄清楚标志-nostartfiles
的目的。它阻止立即调用main()
,通常您还会指定程序入口点。但是,为什么我要这样做?除了需要自己启动所有内容的内核外,是否有非操作系统原因指定不同的程序入口点?
我似乎无法弄清楚标志-nostartfiles
的目的。它阻止立即调用main()
,通常您还会指定程序入口点。但是,为什么我要这样做?除了需要自己启动所有内容的内核外,是否有非操作系统原因指定不同的程序入口点?
当您不想链接任何标准库(如libc和libgcc)并且不希望运行标准初始化操作,例如调用C ++构造函数时,您可以使用-nostartfiles
(以及-nostdlib
)。典型的用例是编写系统软件,例如内核或固件。
-nostartfiles
命令行参数时,将不会将参数传递给main()
函数,可执行文件中也无法使用环境变量等其他功能。Docker在一个简单的容器内运行单个二进制文件的示例中使用了-nostartfiles
,即使容器像单个二进制文件一样运行:https://docs.docker.com/develop/develop-images/baseimages/,这是另一个用例。-nostartfiles
选项,它将列出链接到代码中的函数列表。