我正在尝试在 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 的详细说明。