Расположение стандартной библиотеки C
В руководстве gcc указано, что "сама стандартная библиотека C
хранится в '/usr/lib/libc.a'. У меня установлен gcc, но не удалось найти libc.a в указанном месте. Любопытно узнать, где он находится.
Я нахожу много файлов .so в каталоге /usr/lib. Что это такое?
Ответы
Ответ 1
Несколько вещей:
- gcc и glibc - две разные вещи. gcc - это компилятор, glibc - библиотеки времени выполнения. Практически все требует glibc для запуска.
-
.a
файлы являются статическими библиотеками, .so
означает общий объект и является эквивалентом Linux для DLL
- Большинство вещей НЕ связывают с libc.a, они ссылаются на libc.so
Надеюсь, что это очистит тебя. Что касается местоположения, он почти наверняка будет находиться в /usr/lib/libc.a
и/или /usr/lib/libc.so
. Как я уже сказал, один из них более распространен.
Ответ 2
Если вы ищете libc.a
:
$ gcc --print-file-name=libc.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a
Ответ 3
Если вы находитесь в Linux (rpm), вы получите местоположение установленного glibc с помощью
rpm -ql glibc
и rpm -ql glibc-devel
.
locate libc.a
предоставит вам место. И посмотреть, откуда он идет:
rpm -qf /usr/lib/libc.a
Вот что rpm -qi
должен рассказать об этих пакетах
Glibc-разви:
Пакет glibc-devel содержит необходимые файлы объектов для разработки программ, в которых используются стандартные библиотеки C (которые используется почти всеми программами). Если вы разрабатываете программы, которые будут использовать стандартные библиотеки C, ваша система должна иметь эти стандартных объектных файлов, доступных для создания исполняемые файлы. Установите glibc-devel, если вы собираетесь разрабатывать программы, которые будут используйте стандартные библиотеки C
Glibc:
В пакете glibc содержатся стандартные библиотеки, которые используются несколько программ в системе. Чтобы сохранить дисковое пространство и памяти, а также упростить модернизацию, общий системный код хранятся в одном месте и распределяются между программами. Этот пакет содержит наиболее важные наборы разделяемых библиотек: стандарт C библиотеки и стандартной математической библиотеки. Без этих двух библиотек Система Linux не будет работать.
Ответ 4
On centos 5.8
$ ls -l /usr/lib/libc.a
-rw-r--r-- 1 root root 2442786 Apr 8 2010 /usr/lib/libc.a
$ rpm -qf /usr/lib/libc.a
glibc-devel-2.3.4-2.43.el4_8.3
Вы также должны установить пакет glibc-devel
в дистрибутивах RedHat.
Ответ 5
Вам необходимо установить пакет для статических библиотек отдельно:
Glibc-static.i686