我想知道在代码中使用哪种类型的库不需要指定gcc命令? /usr/lib/libc.a是唯一一个吗?
需要哪些库来指定gcc?
谢谢和问候!
答案 0 :(得分:4)
您可以使用-dumpspecs
开关了解gcc自动传递给链接器的参数。例如,在使用MinGW的Windows 7设置中使用:
gcc -dumpspecs | less
在libgcc部分下面显示:
*libgcc:
%{mthreads:-lmingwthrd} -lmingw32 %{shared-libgcc:-lgcc_s} -lgcc -lmoldname -lmingwex -lmsvcrt
建议将这些库传递给ld链接器,除非我明确禁止使用nodefaultlibs
或nostdlib
等选项。您的gcc dumpspec看起来会有所不同,具体取决于它配置为使用的主机平台,操作系统和目标。
编辑:帮助回答Tim评论中的问题。
根据gcc docs规范字符串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规范字符串,但libgcc不会。
我刚刚在虚拟框下运行的Ubuntu上检查了转储规范gcc 4.4.x,看来libc库包含在lib规范字符串下。
*lib:
%{pthread:-lpthread} %{shared:-lc} %{!shared:%{mieee-fp:-lieee} %{profile:-lc_p}%{!profile:-lc}}
希望能回答你的问题。