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

标签 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 库。

最佳答案

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

关于c++ - 在 Linux 上运行时覆盖 libstdc++ 搜索路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17177059/

相关文章:

c++ - 二分查找的使用

c++ - 与隐式和显式模板声明混淆

linux - 从 bash 脚本返回错误的 BASH 变量

linux - 了解汇编代码

c++ - 从 C 转换为 C++ 后对共享库函数的 undefined reference

c++ - 如何在 opencv 中将 QPointf 转换为 Point?

c++ - 通过其调色板信息裁剪 8 位位图

ruby-on-rails - 环境从 Windows 更改为 Linux 后 Gem 安装编码错误

通过链接到其他 .so 和 .a 文件的组合来创建 .so

c++ - 如何可移植地加载动态库并运行其初始化代码?