【发布时间】:2020-08-12 16:59:27
【问题描述】:
考虑以下几点: 我有一个 C++ 文件。我使用 RHEL6 机器来编译我的代码。但我希望我的可执行文件/二进制文件也能够在 RHEL4 上运行。 现在我经历了以下3个案例-
- 如果我在 RHEL6 上使用 gcc 版本 4.4.7 编译一个简单的 c++ 文件,我无法在 RHEL4 机器上执行它。错误是
加载共享库时出错:需要 glibc 2.5 或更高版本 动态链接器
gcc: Reduce libc required version 给出了解决方案。修复后,我可以在 RHEL4 上运行二进制文件。
-
如果我使用静态库编译(在具有相同 gcc 版本的 RHEL6 上), 我能够在 RHEL4 机器上执行它。不需要像案例1那样使用
-Wl,--hash-style=both。 -
如果我在 RHEL6 上编译我的项目(而不是单个文件),那么在 RHEL4 平台上运行二进制文件时会出现以下错误。
/lib64/libc.so.6:未找到版本“GLIBC_2.7”
我的问题是:
a) 为什么静态链接库不会出错。
b) 案例 1 和案例 3 产生的错误有什么区别。
【问题讨论】: