如何确定glibc(等)库的已安装版本?

时间:2010-04-27 15:27:01

标签: linux gcc gnu cross-compiling

我正在使用嵌入式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 个答案:

答案 0 :(得分:14)

对于glibc:

/lib/libc.so.6

运行so文件听起来很奇怪,但在这种情况下应该打印出版本信息

对于内核版本,请使用uname

对于binutils解析ld --version的输出可能会产生您期望的结果,gcc --version也是如此。这有点乏味但我不知道另一种方式。

答案 1 :(得分:1)

要了解当前安装的glibc版本,请编译并运行以下C代码。

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

干杯!!!

答案 2 :(得分:0)

运行

可以找到更全面的答案
find /lib -iname 'libc*.so'

在最近的系统上,这将为您提供这样的结果,表明我在ubuntu 18.10上使用glibc 2.28

/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。*。