我正在尝试为我的游戏Open Hexagon创建一个独立于发行版的.tar.gz存档,该存档使用最新版本的GCC(4.8.1)进行编译,并使用最新版本的libstdc++
。
由于它已经使用了很多共享库,我决定将游戏与所需的.so
文件一起部署,包括libstdc++
的正确版本。
我使用LD_LIBRARY_PATH
更改默认库搜索路径。不幸的是,Linux(与Windows不同)始终优先/usr/lib/
,即使设置了LD_LIBRARY_PATH
。
有没有办法在运行时覆盖libstdc++
的搜索路径?到目前为止,我见过的唯一解决方案是在编译时弄乱rpath
或runpath
,这是我想要避免的。另一种解决方案是静态链接,但我听说这在Linux中是一种不好的做法,我也在我的游戏中使用自动更新程序,它自动只更新最新的.so
库。
答案 0 :(得分:0)
使用“export LD_LIBRARY_PATH = [我的新路径]:$ LD_LIBRARY_PATH”对我有用。它不会将/ usr / lib置于更高的优先级。
答案 1 :(得分:0)
在编译时删除RPATH
部分解决。但是,旧版发行版的glibc
版本仍存在问题。