Как вы можете определить установленные версии библиотек glibc? - PullRequest
6 голосов
/ 27 апреля 2010

Я работаю со встроенным Linux-развертыванием и использую цепочку инструментов кросс-компиляции, которая не компилирует вызовы функций библиотеки I2C.

Как определить точные версии библиотек в системе, чтобы я мог перестроить цепочку инструментов?

Я не собираюсь заменять развернутые библиотеки, так как знаю, что они работают (включая I2C), поэтому я считаю, что мне нужно следующее:

  • Версия Binutils
  • версия GCC
  • GLIBC
  • Ядро (для заголовков)

Я думаю, что из следующего я могу предположить, что библиотека binutils - версия 2.2.5. Ядро модифицировано, для которого у меня есть источник.

root@dev-box />ls /lib/ -al
drwxrwxrwx  3 root root     1024 Apr 27 09:44 .
drwxrwxrwx 14 root root     1024 Jan  1  1970 ..
-rwxrwxrwx  1 root root   105379 Jan  1  1970 ld-2.2.5.so
lrwxrwxrwx  1 root root       16 Jan  1  1970 ld-linux.so.2 -> /lib/ld-2.2.5.so
lrwxrwxrwx  1 root root       16 Jan  1  1970 ld.so.1 -> /lib/ld-2.2.5.so
-rwxrwxrwx  1 root root  1288601 Jan  1  1970 libc.so.6
-rwxrwxrwx  1 root root    25441 Jan  1  1970 libcrypt.so.1
-rwxrwxrwx  1 root root    14303 Jan  1  1970 libdl.so.2
-rwxrwxrwx  1 root root    36800 Jan  1  1970 libgcc_s.so.1
-rwxrwxrwx  1 root root   530401 Jan  1  1970 libm.so.6
-rwxrwxrwx  1 root root    86626 Jan  1  1970 libnsl.so.1
-rwxrwxrwx  1 root root    17533 Jan  1  1970 libnss_dns.so.2
-rwxrwxrwx  1 root root    46324 Jan  1  1970 libnss_files.so.2
-rwxrwxrwx  1 root root    98633 Jan  1  1970 libpthread.so.0
-rwxrwxrwx  1 root root    69966 Jan  1  1970 libresolv.so.2
-rwxrwxrwx  1 root root    12897 Jan  1  1970 libutil.so.1

Ответы [ 3 ]

14 голосов
/ 27 апреля 2010

Для glibc:

/lib/libc.so.6

Может показаться странным запускать файл so, но в этом случае следует распечатать информацию о версии

Для версии ядра используйте uname

Для синтаксического анализа binutils вывод ld --version может дать то, что вы ожидаете, то же самое для gcc --version. Это немного утомительно, но я не знаю другого пути.

1 голос
/ 30 января 2015

Чтобы узнать текущую установленную версию glibc, скомпилируйте и запустите следующий код C.

#include <stdio.h>
#include <gnu/libc-version.h>
int main (void) { puts (gnu_get_libc_version ()); return 0; }

Ура !!!

0 голосов
/ 29 октября 2018

более полный ответ можно найти, набрав

find /lib -iname 'libc*.so'

В последней системе это даст вам такие результаты, которые показывают, что я использую glibc 2.28 здесь, на ubuntu 18.10

/lib/x86_64-linux-gnu/libc-2.28.so
/lib/x86_64-linux-gnu/libcrypt-2.28.so
/lib/i386-linux-gnu/libc-2.28.so
/lib/i386-linux-gnu/libcrypt-2.28.so

Для многоархивной системы у вас может быть несколько копий для режимов 386 и 64, я думаю, они должны быть одинаковыми.

У меня не было /lib/libc.so.* в моей системе.

...