Расположение стандартной библиотеки C - PullRequest
26 голосов
/ 08 мая 2011

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

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

Ответы [ 5 ]

24 голосов
/ 08 мая 2011

Несколько вещей:

  • gcc и glibc - это две разные вещи. gcc - это компилятор, glibc - это библиотеки времени выполнения. Практически все для запуска glibc.
  • .a файлы являются статическими библиотеками, .so означает общий объект и является Linux-эквивалентом DLL
  • Большинство вещей не связаны с libc.a, они связаны с libc.so

Надеюсь, это прояснит для вас. Что касается местоположения, оно почти наверняка будет в /usr/lib/libc.a и / или /usr/lib/libc.so. Как я уже сказал, так чаще встречается.

22 голосов
/ 19 марта 2016

Если вы ищете libc.a:

$ gcc --print-file-name=libc.a
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libc.a
5 голосов
/ 08 мая 2011

Если вы используете Linux на базе RPM (Red Hat / CentOS / Fedora / SUSE), вы получите местоположение установленного 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 не будет работать.

3 голосов
/ 10 июля 2012

Вам необходимо установить пакет для статических библиотек отдельно: glibc-static.i686

2 голосов
/ 08 мая 2011

На 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...