除了使用 -nostdlib
和链接 crt1.o -lc -lgcc
你自己,有什么简单的方法来阻止gcc的链接 crtbegin[S].o
和 crtend[S].o
?这些文件不是那么大,但我正在玩小型二进制文件,并希望删除C程序不需要的无用的C ++支持代码。 (据推测,如果您正在使用带有全局对象变量的C ++库,gcc甚至会将它们链接到C程序。我会饶恕每个人如何在全局对象被引用的地方生成安全的一次性初始化调用。 C ++模块,而不是在之前初始化全局对象 main
...)
我不会反对攻击gcc specs
文件以使C ++支持文件的链接以某种方式为条件,但我不确定如何做到这一点。也许这已经很好了?