- 論壇徽章:
- 0
|
我們的serever有些是這個(gè)版本:
Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
gcc version 3.4.6 20060404 (Red Hat 3.4.6-9)
另一些是這個(gè)版本:
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)
我有一個(gè)C程序。如果我在4.6版server上編譯,它可以在5.3版server上正確運(yùn)行。
但是如果我在5.3版server上編譯,它在4.6版server上就無法運(yùn)行,只給出一下提示:
Floating exception
我查看了兩個(gè)可執(zhí)行文件,發(fā)現(xiàn)里面都包含GLIBC_2.2.5。
我需要在二進(jìn)制的級別理解為什么在高版本Linux編譯出的程序在低版本Linux中不能運(yùn)行。于是我從gnu.org下載了以下文件:
System V Application Binary Interface
AMD64 Architecture Processor Supplement
Draft Version 0.99.5
Edited by Michael Matz, Jan Hubiˇcka, Andreas Jaeger, Mark Mitchell
September 3, 2010
但是這是個(gè)很大的文件,有128頁,而且我沒有理解ELF文件二進(jìn)制碼的經(jīng)驗(yàn)。我不知道這是不是我所需要的正確的文件。
大家可以不可以給我建議?
1. 短期內(nèi),請問,盡管它們都擁有GLIBC_2.2.5,為什么在Linux5.3編譯出的程序在Linux4.6中不能運(yùn)行?
2. 從長遠(yuǎn)看,我學(xué)習(xí)并掌握ELF文件二進(jìn)制格式的正確途徑是什么?我需要那些資料來學(xué)習(xí)這個(gè)領(lǐng)域?
謝謝。
|
|