Description of problem: default glibc installation .SPEC has little downward kernel compatibility. Even static link is not portable. glibc.spec Conflicts: kernel < 2.6.9 %define enablekernel 2.6.9 Version-Release number of selected component (if applicable): source compile platform RHEL 5.2 target compile running platform RHEL 3 How reproducible: # vi hello.cpp #include <iostream> int main() { std::cout << "Hello World!" << std::endl; return 0; } # g++ hello.cpp -m32 -static -o hello # file hello hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, statically linked, for GNU/Linux 2.6.9, not stripped # ./hello Hello World! Actual results: On the target RHEL 3 platform using same static binary. # ./hello FATAL: kernel too old Segmentation fault Recompile glibc in RHEL 5.2 to have enablekernel 2.4.0 and Conflicts < 2.4.0 and recompile static also cannot run the program in lower version of RHEL. Expected results: static binary portability. Additional info:
Statically linked programs are (unlike dynamically linked programs) never portable across major releases. See http://people.redhat.com/drepper/no_static_linking.html