何时使用gcc标志-nostartfiles?

何时使用gcc标志-nostartfiles?,gcc,Gcc,我似乎无法理解标志-nostartfiles的用途。它防止立即调用main(),通常还需要指定程序入口点。但是,我为什么要这样做?我已经编写了一个需要它的内核,因为一切都由我来开始,但除此之外,是否有非操作系统的理由来指定不同的程序入口点?当您不需要任何标准库(如libc和libgcc)时,您会使用-nostartfiles(和-nostlib)要链接到标准初始化操作,比如调用C++构造函数,就可以运行。典型的用例是编写内核或固件之类的系统软件。我认为使用-nostartfiles命令行参数将不

我似乎无法理解标志
-nostartfiles
的用途。它防止立即调用
main()
,通常还需要指定程序入口点。但是,我为什么要这样做?我已经编写了一个需要它的内核,因为一切都由我来开始,但除此之外,是否有非操作系统的理由来指定不同的程序入口点?

当您不需要任何标准库(如libc和libgcc)时,您会使用
-nostartfiles
(和
-nostlib
)要链接到标准初始化操作,比如调用C++构造函数,就可以运行。典型的用例是编写内核或固件之类的系统软件。

我认为使用
-nostartfiles
命令行参数将不会传递给
main()
,环境变量将不可用于可执行文件,除此之外。Docker在一个示例中使用了
-nostartfiles
,其中一个二进制文件在一个简单的容器中运行,即容器像一个二进制文件一样运行,因此这是另一个用例


稍微相关的是,如果未使用
-nostartfiles
选项,它会列出链接到代码中的函数。

“我已经编写了一个需要它的内核,因为一切都由我来开始”-您回答了自己的问题。是的。我的意思是,除了内核编写之外,还有其他原因吗(参见问题的最后一部分)。如果没有,那么我想我确实比我想象的更了解它:-pmicrocontroller,将编译器用作交叉编译器,并防止库被使用,因为没有操作系统支持它们。另一个用例是当您自己构建开始文件时。:)