gcc -nostdlib是否会阻止标准库的显式附加?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了gcc -nostdlib是否会阻止标准库的显式附加?相关的知识,希望对你有一定的参考价值。
如果我使用-nostdlib
选项调用GCC链接器,是否会覆盖standardlibs的任何手动/显式appendecis?
海湾合作委员会是MinGW的4.8.1。
例:
gcc -nostdlib [MyObjectsAndLibraries] -lmsvcrt -o Outfile
由于libmsvcrt
是一个标准库,它会被添加到链接过程中还是会被忽略?我找不到任何关于此的可靠数据。这就是为什么我也会感谢某种来源。
在这种情况下,“标准库”是指gcc
默认隐含链接的库。在命令行中明确提到的库将始终链接。实际上,gcc
上的http://gcc.gnu.org/onlinedocs/gcc-4.8.2/gcc/Link-Options.html#Link-Options文档甚至指出,除非你真的知道你在做什么,否则在使用-lgcc
时应该明确地添加-nostdlib
,因为编译器可能依赖于其中定义的一些内置函数:
换句话说,当您指定-nostdlib或-nodefaultlibs时,通常也应指定-lgcc。这可确保您没有对内部GCC库子例程的未解析引用。
由于我在Google上发现了这一点,因此请务必注明您指定内容的顺序。 @ Virgile的答案就足够了,但链接时可能会遇到链接器错误。因此,对于您的构建,它可能会有问题,因为您的exe永远不会与msvcrt或gcc链接。
这是一个规范的构建语句,扩展了@ Virgile的asnwer
gcc -g0 -O2 -Wall -nostdlib -c *.o -o a.exe -lmsvcrt -lgcc
这是一个很好的参考https://stackoverflow.com/a/18389266/2262111
以上是关于gcc -nostdlib是否会阻止标准库的显式附加?的主要内容,如果未能解决你的问题,请参考以下文章