2

如果问题微不足道,我深表歉意,但我也四处搜索并下载了 gcc 源代码,但没有找到满意的答案。

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

4

1 回答 1

1

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

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

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

的结果grep '\-lSystem' -r ./gcc/config/

./gcc/config/darwin.h:#define LIB_SPEC "%{!static:-lSystem}"
于 2014-12-13T12:57:44.463 回答