我编译了一个二进制文件并复制到另一台机器上执行。但我得到了上述错误。在第二台机器上,我无法安装新库。我尝试将第一台机器上的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
答案 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>