Gcc Libc名称和编译器

Gcc Libc名称和编译器,gcc,operating-system,compiler-specific,Gcc,Operating System,Compiler Specific,如果这个问题很琐碎,我深表歉意,但我也在谷歌上搜索并下载了gcc源代码,但没有找到令人满意的答案 那么,编译器(gcc/clang/etc…)如何知道libc的文件名呢?我知道类似unix的系统将其命名为libc.a、libc.so等。。。但是,例如,MacOSX将其命名为libSystem。我想名称在编译器的代码中是硬编码的,但我还没有找到证据。C库链接标志在gcc的源代码中是硬编码的,在gcc的源代码中是grep-lc或-lSystem。编译时,gcc在其搜索路径中搜索名为libc.so或l

如果这个问题很琐碎,我深表歉意,但我也在谷歌上搜索并下载了gcc源代码,但没有找到令人满意的答案


那么,编译器(gcc/clang/etc…)如何知道libc的文件名呢?我知道类似unix的系统将其命名为libc.a、libc.so等。。。但是,例如,MacOSX将其命名为libSystem。我想名称在编译器的代码中是硬编码的,但我还没有找到证据。

C库链接标志在gcc的源代码中是硬编码的,在gcc的源代码中是grep
-lc
-lSystem
。编译时,gcc在其搜索路径中搜索名为
libc.so
libc.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}"

让我告诉你一个非常有用的工具:
grep
。例如,将其应用于gcc源代码会告诉您,
gcc/config/darwin.h
包含字符串
-lSystem