在Linux上运行时覆盖libstdc ++搜索路径

时间:2013-06-18 19:17:06

标签: c++ linux shared-libraries ld dynamic-linking

我正在尝试为我的游戏Open Hexagon创建一个独立于发行版的.tar.gz存档,该存档使用最新版本的GCC(4.8.1)进行编译,并使用最新版本的libstdc++

由于它已经使用了很多共享库,我决定将游戏与所需的.so文件一起部署,包括libstdc++的正确版本。

我使用LD_LIBRARY_PATH更改默认库搜索路径。不幸的是,Linux(与Windows不同)始终优先/usr/lib/,即使设置了LD_LIBRARY_PATH

有没有办法在运行时覆盖libstdc++的搜索路径?到目前为止,我见过的唯一解决方案是在编译时弄乱rpathrunpath,这是我想要避免的。另一种解决方案是静态链接,但我听说这在Linux中是一种不好的做法,我也在我的游戏中使用自动更新程序,它自动只更新最新的.so库。

2 个答案:

答案 0 :(得分:0)

使用“export LD_LIBRARY_PATH = [我的新路径]:$ LD_LIBRARY_PATH”对我有用。它不会将/ usr / lib置于更高的优先级。

答案 1 :(得分:0)

在编译时删除RPATH部分解决。但是,旧版发行版的glibc版本仍存在问题。