Имя Libc и компиляторы

Я прошу прощения, если вопрос тривиален, но я гуглил и скачал исходный код gcc тоже, не найдя удовлетворительного ответа.

Итак, как компилятор ( gcc/clang/etc...) знает имя файла libc? Я знаю, что Unix-подобные системы называют это libc.a, libc.so и т. Д. Но, например, Mac OS X называет это libSystem. Я предполагаю, что имя жестко закодировано в коде компилятора, но я пока не нашел доказательств.

1 ответ

Флаг связывания библиотеки C жестко задан в исходном коде gcc, grep -lc или же -lSystem в исходном коде gcc. При компиляции gcc ищет libc с именем libc.so или же libc.a в пути поиска (добавьте префикс lib и суффикс .so или же .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}"
Другие вопросы по тегам