什么时候使用gcc标志-nostartfiles?

时间:2017-03-27 15:08:42

标签: gcc

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

2 个答案:

答案 0 :(得分:5)

当您不希望链接任何标准库(如libc和libgcc)和标准初始化操作(如调用C ++构造函数)时,您将使用-nostartfiles(和-nostdlib)跑。典型的用例是编写内核或固件等系统软件。

答案 1 :(得分:1)

我认为使用-nostartfiles命令行参数将不会传递给main(),并且环境变量将对可执行文件不可用。 Docker在一个简单的容器中运行单个二进制文件的示例中使用-nostartfiles,即,该容器像一个二进制文件一样运行:https://docs.docker.com/develop/develop-images/baseimages/,所以这是另一个用例。

Source for 'startup files' in gcc/mingw密切相关,如果未使用-nostartfiles选项,它将列出链接到代码的函数。