Подтвердить что ты не робот

Расположение стандартной библиотеки C

В руководстве gcc указано, что "сама стандартная библиотека C хранится в '/usr/lib/libc.a'. У меня установлен gcc, но не удалось найти libc.a в указанном месте. Любопытно узнать, где он находится.

Я нахожу много файлов .so в каталоге /usr/lib. Что это такое?

4b9b3361

Ответ 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