强制 Firefox 使用不同的库

强制 Firefox 使用不同的库

我正在尝试在 RHEL5 上升级到 Firefox 5,但出现以下错误:

./firefox-bin: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /home/isdtc/tdiakiw/bin/firefox5/firefox/libxul.so)

由于计算机是工作机器,我无法直接更新库。为了解决这个问题,我下载了 libstdc++.so.6.0.10 库。

strings libstdc++.so.6.0.10 | grep GLIBCXX显示:

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_FORCE_NEW
GLIBCXX_DEBUG_MESSAGE_LENGTH

有没有办法强制 Firefox 使用这个库?我尝试将包含新库(具有 so 名称)的目录添加到 LD_LIBRARY_PATH,然后运行,但仍然收到相同的错误消息

./firefox
+ moz_libdir=/usr/local/lib/firefox-5.0.1
+ found=0
+ progname=./firefox
++ dirname ./firefox
+ curdir=.
++ basename ./firefox
+ progbase=firefox
+ run_moz=./run-mozilla.sh
+ test -x ./run-mozilla.sh
+ dist_bin=.
+ found=1
+ '[' 1 = 0 ']'
+ script_args=
+ debugging=0
+ MOZILLA_BIN=firefox-bin
+ '[' linux = beos ']'
+ pass_arg_count=0
+ '[' 0 -gt 0 ']'
+ '[' 0 = 1 ']'
+ exec ./run-mozilla.sh ./firefox-bin
./firefox-bin: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by xxxxxxxxxxxxx/firefox/libxul.so)

答案1

Firefox 附带一个 shell 脚本,该脚本通常位于 中/usr/bin/firefox,它会进行一些设置并启动真正的二进制文件,通常是/usr/lib/firefox/firefox-bin。(当然,由于您将其安装在主目录中,因此这些路径显然会有所不同。)在这种情况下,shell 脚本可能会覆盖LD_LIBRARY_PATH。检查它并确保它没有覆盖,然后尝试将您的添加LD_LIBRARY_PATH到其中。

我假设您使用的是 mozilla.com 上的官方二进制文件。下载源代码并进行编译可能会更容易(假设您的系统上安装了必要的工具),因为如果 Firefox 实际上不需要 libstdc++ 6.0.10,但需要它(因为 Mozilla 恰好针对它进行编译),那么您可能能够成功编译它以使用系统上安装的版本。 Mozilla 开发者中心网站上有关于构建 Firefox 的详细说明。

相关内容