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是否会阻止标准库的显式附加?的主要内容,如果未能解决你的问题,请参考以下文章

Mac OSX 上的 GCC——多个版本的 gcc

mingw和gcc的关系?mingw具有gcc的全部核心编译功能吗

ubuntu系统下怎么安装gcc编译器

GCC:在 GCC 版本之间伪装

arm gcc 内嵌汇编,gcc该是啥选项呢

如何安装gcc开发环境