2010-04-27 62 views
4

我正在使用嵌入式Linux部署,並使用不編譯I2C庫函數調用的交叉編譯器工具鏈。如何確定glibc(etc.)庫的安裝版本?

如何確定系統中庫的精確版本,以便重建工具鏈?

我不打算更換庫部署,因爲我知道他們的工作(包括I2C),所以我相信我需要以下條件:

  • Binutils的版本
  • 版本的GCC
  • GLIBC
  • 內核(爲頭)

我想我可以從下面的binU中承擔tils庫是2.2.5版本。內核被修改爲我有源代碼。

[email protected] />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 

回答

12

對於glibc的:

/lib/libc.so.6

聲音也許怪跑那麼文件,但要在這種情況下

打印出的版本信息的內核版本使用uname

對於解析輸出ld --version的binutils可能會產生你所期望的,相同的f或gcc --version。這有點乏味,但我不知道另一種方式。

+0

我不知道。這很好,謝謝。 – Jamie 2010-04-27 15:46:50

+0

因爲我知道內核的版本,我沒有嘗試'uname',在我的系統上它不起作用。相反'版本'給了我愛。 – Jamie 2010-04-27 16:26:13

+1

庫怎麼也可以是一個可執行文件? – 2014-09-09 16:18:57

1

要知道當前安裝的glibc版本,請編譯並運行以下C代碼。

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

乾杯!