在GCC中不需要指定哪些类型的库?

时间:2011-06-15 01:14:23

标签: c gcc

我想知道在代码中使用哪种类型的库不需要指定gcc命令? /usr/lib/libc.a是唯一一个吗?

需要哪些库来指定gcc?

谢谢和问候!

1 个答案:

答案 0 :(得分:4)

您可以使用-dumpspecs开关了解gcc自动传递给链接器的参数。例如,在使用MinGW的Windows 7设置中使用:

gcc -dumpspecs | less 

在libgcc部分下面显示:

*libgcc:
%{mthreads:-lmingwthrd} -lmingw32  %{shared-libgcc:-lgcc_s} -lgcc -lmoldname -lmingwex -lmsvcrt

建议将这些库传递给ld链接器,除非我明确禁止使用nodefaultlibsnostdlib等选项。您的gcc dumpspec看起来会有所不同,具体取决于它配置为使用的主机平台,操作系统和目标。

编辑:帮助回答Tim评论中的问题。

根据gcc docs规范字符串liblibgcc的含义如下:

 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规范字符串,但libgcc不会。

我刚刚在虚拟框下运行的Ubuntu上检查了转储规范gcc 4.4.x,看来libc库包含在lib规范字符串下。

*lib:
%{pthread:-lpthread}    %{shared:-lc}    %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}

希望能回答你的问题。