Libc名称和编译器

时间:2014-12-13 11:24:18

标签: gcc operating-system compiler-specific

如果这个问题很简单,我很抱歉,但我一直在搜索gcc源代码并且没有找到满意的答案。

那么,编译器(gcc / clang / etc ...)如何知道libc的文件名?我知道unix-like系统将它命名为libc.a,libc.so等...但是,例如,mac os x将其命名为libSystem。我想这个名字在编译器的代码中是硬编码的,但我还没有找到任何证据。

1 个答案:

答案 0 :(得分:1)

C库链接标志在gcc源代码中的gcc,grep -lc-lSystem的源代码中进行了硬编码。在编译时,gcc在其搜索路径中搜索名称为libc.solibc.a的libc(添加前缀lib和后缀.so.a

以下是gcc源代码目录下grep '\-lc' -r ./gcc/config/的一些结果。

......
./gcc/config/i386/sysv5.h:  %{!shared:%{!symbolic:-lc -lcrt}}"

grep '\-lSystem' -r ./gcc/config/

的结果
./gcc/config/darwin.h:#define LIB_SPEC "%{!static:-lSystem}"
相关问题