在可執行文件上顯示的內核版本文件與您的系統上安裝的內核無關。它與構建時與程序鏈接的C庫相匹配。
您的C編譯器針對特定的C庫(通常爲glibc)。反過來,C庫的目標是一個內核API(即C庫是爲特定的內核構建的)。這是文件顯示的版本。
您不必擔心文件顯示的內核版本與您計算機上安裝的內核版本之間的不匹配。
@REALFREE:你可以嘗試下面的實驗。也許這將幫助 你這是怎麼回事的把握:
$ uname -r
3.10-2-amd64
$ gcc -Wall -Werror hello.c -o hello
$ readelf --notes ./hello
Displaying notes found at file offset 0x0000021c with length 0x00000020:
Owner Data size Description
GNU 0x00000010 NT_GNU_ABI_TAG (ABI version tag)
OS: Linux, ABI: 2.6.32
有關ABI標籤的信息包含在一個小精靈 段稱爲注:。編譯該程序時,該信息由鏈接器 編寫。它匹配C庫的ABI標籤。
$ ldd ./hello
linux-vdso.so.1 (0x00007fffd31fe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5f1a465000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5f1a827000)
$ readelf --notes /lib/x86_64-linux-gnu/libc.so.6
Displaying notes found at file offset 0x00000294 with length 0x00000020:
Propriétaire Taille des données Description
GNU 0x00000010 NT_GNU_ABI_TAG (étiquette de version ABI)
OS: Linux, ABI: 2.6.32
爲了構建C庫,你必須選擇一個內核 版本。在這裏,C庫是爲2.6.32內核編譯的,但是 它也適用於更新的內核。但是,如果程序 在2.6.32以上的內核上運行,則會顯示內核太舊的警告 。
什麼版本的Linux頭文件在'/ usr/src/linux'中? – robert
編譯器的輸出不依賴於您使用的內核版本。它完全依賴於你正在使用的編譯器。 – 2012-09-02 13:10:10
看來我在這裏有不同版本的linux: mahdi @ XO0PS:〜$ ls/usr/src/| grep linux linux-headers-2.6.38-14 linux-headers-2.6.38-14-generic-pae linux-headers-2.6.38-8 linux-headers-3.2.0-23 linux-headers -3.2。0-23-generic linux-headers-3.2.0-24 linux-headers-3.2.0-24-generic linux-headers-3.2.0-26 linux-headers-3.2.0-26-generic linux-headers-3.2.0-27 linux-headers-3.2.0-27-generic linux-headers-3.2.0-29 linux-headers-3.2.0-29-generic – mahdi