我正在尝试为我的游戏 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
库。
最佳答案
使用“export LD_LIBRARY_PATH=[my new path]:$LD_LIBRARY_PATH”对我有用。它不会将/usr/lib 置于更高的优先级。
关于c++ - 在 Linux 上运行时覆盖 libstdc++ 搜索路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177059/