如何修复“/lib/tls/libc.so.6:版本`GLIBC_2.4'未找到”?

时间:2009-05-28 11:52:04

标签: c++ linker

我编译了一个二进制文件并复制到另一台机器上执行。但我得到了上述错误。在第二台机器上,我无法安装新库。我尝试将第一台机器上的libc放到第二台机器上的二进制文件目录中,但链接器(我发现使用ldd)仍然从标准路径/lib/tls/libc.so.6加载。请让我知道最少的变更修复。

更新

用于编译/链接的命令:

  

g ++ -O2 -DNDEBUG -o CountStrings   -I ../../../../../ tbb / tbb20_20080408oss_src / include / ../src/CountStrings.cpp   -L ../../../../../ TBB / tbb20_20080408oss_src /建设/ linux_ia32_gcc_cc4.3.2_libc2.8.90_kernel2.6.27_release /   -ltbb

libtbb.so依赖于libc.so.6

4 个答案:

答案 0 :(得分:2)

事实上,解决问题的更简单方法是升级您的操作系统版本

例如,Java 1.7没有在RedHat 4上运行,但在RedHat 5上运行良好。

答案 1 :(得分:1)

尝试为您的流程导出LD_LIBRARY_PATH=<location_of_your_lib> 例如$ LD_LIBRARY_PATH=/home/kumar ./a.out
将在/home/kumar/之前寻找其他地方的库

答案 2 :(得分:0)

您是否检查过编译机上是否有静态版本的库?如果有你可以明确链接它,使用/lib/tls/libc.a而不是-L / lib / tls -lc(或任何你的方言)。

答案 3 :(得分:0)

我不确定使用比系统提供的其他libc可能产生的(不良)副作用,但您可以尝试使用LD_PRELOAD

强制使用特殊的libc副本
LD_PRELOAD=<location_of_your_lib> <yourprogram>