- 论坛徽章:
- 0
|
我们的serever有些是这个版本:
Red Hat Enterprise Linux AS release 4 (Nahant Update 6)
gcc version 3.4.6 20060404 (Red Hat 3.4.6-9)
另一些是这个版本:
Red Hat Enterprise Linux Server release 5.3 (Tikanga)
gcc version 4.1.2 20080704 (Red Hat 4.1.2-44)
我有一个C程序。如果我在4.6版server上编译,它可以在5.3版server上正确运行。
但是如果我在5.3版server上编译,它在4.6版server上就无法运行,只给出一下提示:
Floating exception
我查看了两个可执行文件,发现里面都包含GLIBC_2.2.5。
我需要在二进制的级别理解为什么在高版本Linux编译出的程序在低版本Linux中不能运行。于是我从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
但是这是个很大的文件,有128页,而且我没有理解ELF文件二进制码的经验。我不知道这是不是我所需要的正确的文件。
大家可以不可以给我建议?
1. 短期内,请问,尽管它们都拥有GLIBC_2.2.5,为什么在Linux5.3编译出的程序在Linux4.6中不能运行?
2. 从长远看,我学习并掌握ELF文件二进制格式的正确途径是什么?我需要那些资料来学习这个领域?
谢谢。
|
|