我需要帮助它是bug还是我不明白编译选项是如何工作的? 我有示例main.c文件并尝试将其编译为:
$ g++ -nostdlib -g -fno-rtti -fno-exceptions -ffreestanding -nostdinc -nostdinc++ -Wl,--build-id=none,-g,-nostdlib,-nostartfiles,-zmax-page-size=0x1000 main.c -o main
作为输出我有:
$ ls
main.c startfiles
我试图理解为什么g ++创建的文件名为“startfiles”而不是“main”?
答案 0 :(得分:0)
如果您阅读GNU ld
official documentation,则会看到没有名为-nostartfiles
的选项。你做什么将参数传递给链接器,即选项-n
和-ostartfiles
。
如果我是你,我会检查你试图传递给链接器的那些其他选项。
答案 1 :(得分:0)
-nostartfiles
是一个编译器标志,而不是链接器标志。
对于链接器,它与-n -o startfiles
相同,这就是您获取该输出文件名的原因。