如何解决GCC中不需要指定哪些库?
| 我想知道不需要为gcc命令指定代码中使用的哪种库? /usr/lib/libc.a是唯一的吗? 需要哪种类型的库来指定gcc? 谢谢并恭祝安康!解决方法
您可以通过使用
-dumpspecs
开关了解gcc自动将哪些参数传递给链接器。例如,在使用MinGW的Windows 7安装程序中,使用:
gcc -dumpspecs | less
在libgcc部分下,它显示:
*libgcc:
%{mthreads:-lmingwthrd} -lmingw32 %{shared-libgcc:-lgcc_s} -lgcc -lmoldname -lmingwex -lmsvcrt
除非我明确禁止使用nodefaultlibs
或nostdlib
之类的选项,否则建议将这些库传递给ld链接器。根据配置的主机平台,操作系统和目标,gcc dumpspec看起来会有所不同。
编辑:为了帮助回答蒂姆评论中的问题。
根据gcc文档,规范字符串lib
和libgcc
的含义如下:
lib Libraries to include on the command line to the linker
libgcc Decides which GCC support library to pass to the linker
据我了解,默认情况下,lib和libgcc都传递给链接器。下一部分我不太确定,因此如果我错了,请有人纠正,如果传入诸如nodefaultlib
之类的选项,则只会应用lib spec字符串,而不会应用libgcc。
我刚刚检查了在virtual-box下运行的Ubuntu上gcc 4.4.x的dumpspec,看来libc库包含在lib spec字符串下。
*lib:
%{pthread:-lpthread} %{shared:-lc} %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}
希望这能回答你的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。