1. 程式人生 > >檢視當前系統的glibc版本

檢視當前系統的glibc版本

檢視當前系統的glibc版本

2014年01月03日 15:50:25 feisy 閱讀數:41406更多

個人分類: LINUX

from http://my.oschina.net/acmfly/blog/77211

 

 

有時我們經常需要檢視當前系統的glibc版本,可以這樣檢視:

/lib/libc.so.6

有時:/lib/x86-64-linux/libc.so.6
把這個檔案當命令執行一下

 

為什麼這個庫可以直接run呢? 原來在libc的程式碼中有一點小手腳:

Makerules:586:LDFLAGS-c.so += -e __libc_main 

csu/version.c:71:__libc_main (void) 

void 
__libc_main (void) 

  __libc_print_version (); 
  _exit (0); 

 

或者:

因為ldd命令也是glibc提供的,所以也能檢視

ldd  --version

glibc是什麼,以及與gcc的關係?
glibc是gnu釋出的libc庫,也即c執行庫。glibc是linux 系統中最底層的api(應用程式開發介面),幾乎其它任何的執行庫都會倚賴於glibc。glibc除了封裝linux作業系統所提供的系統服務外,它本 身也提供了許多其它一些必要功能服務的實現,主要的如下:
(1)string,字串處理
(2)signal,訊號處理
(3)dlfcn,管理共享庫的動態載入
(4)direct,檔案目錄操作
(5)elf,共享庫的動態載入器,也即interpreter
(6)iconv,不同字符集的編碼轉換
(7)inet,socket介面的實現
(8)intl,國際化,也即gettext的實現
(9)io
(10)linuxthreads
(11)locale,本地化
(12)login,虛擬終端裝置的管理,及系統的安全訪問
(13)malloc,動態記憶體的分配與管理
(14)nis
(15)stdlib,其它基本功能
gcc 是編譯器,基本上 Linux 下所有的程式(包括核心)都是 gcc 編譯的,libc 當然也是。
gcc 和 libc 是互相依賴的兩個軟體,它們合作的方式類似 Linux 系統的 "自舉"。先在一個可以執行的帶有老 libc 和 gcc 的系統上,用老 gcc 編譯出一個新版本的 gcc + 老 libc,再用這個新 gcc 編譯出一個新 gcc + 新 libc,再用這套東東編譯整個新系統。

 

glibc版本檢視

4.9. How can I find out which version of glibc I am using in the moment? {UD} If you want to find out about the version from the command line simply run the libc binary. This is probably not possible on all platforms but where it is simply locate the libc DSO and start it as an application. On Linux like /lib/libc.so.6 This will produce all the information you need. What always will work is to use the API glibc provides. Compile and run the following little program to get the version information: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #include <stdio.h> #include <gnu/libc-version.h> int main (void) { puts (gnu_get_libc_version ()); return 0; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This interface can also obviously be used to perform tests at runtime if this should be necessary.

 

Just execute:

ldd --version

which comes with glibc package