代码之家  ›  专栏  ›  技术社区  ›  Jamie

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

  •  5
  • Jamie  · 技术社区  · 14 年前

    我正在使用一个嵌入式linux部署,并使用一个不编译i2c库函数调用的跨编译器工具链。

    如何确定系统上库的精确版本,以便重建工具链?

    我不打算替换部署的库,因为我知道它们可以工作(包括i2c),所以我相信我需要以下内容:

    • Binutils版本
    • GCC版本
    • 小精灵
    • 内核(用于头文件)

    我想我可以从下面假设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 回复  |  直到 6 年前
        1
  •  13
  •   jdehaan    14 年前

    对于GLYBC:

    /lib/libc.so.6

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

    对于内核版本使用 uname

    对于分析 ld --version 可能会屈服于你的期望,同样的 gcc --version . 这有点乏味,但我不知道另一种方法。

        2
  •  1
  •   Monir    10 年前

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

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

    干杯!!!!

        3
  •  0
  •   Amias    6 年前

    一个更全面的答案可以通过运行

    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.*