我得到了错误
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not found
我已安装以下rpm文件:https://centos.pkgs.org/6/nux-dextop-i386/chrome-deps-stable-3.11-1.i386.rpm
,因为centOS6有GLIBCXX_3.4.14
和GLIBCXX_3.4.15
版本。
[cloudera@quickstart Downloads]$ strings
/opt/google/chrome/lib/libstdc++.so.6 | grep GLIBC
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_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBC_2.3
GLIBC_2.0
GLIBC_2.4
GLIBC_2.1
GLIBC_2.1.3
GLIBC_2.3.2
GLIBC_2.2
GLIBCXX_DEBUG_MESSAGE_LENGTH
我已将此文件夹链接到libstdc ++。so
[cloudera@quickstart DataGenLinux]$ ln -s /opt/google/chrome/lib/libstdc++.so.6 libstdc++.so.6
[cloudera@quickstart DataGenLinux]$ ./myFile.out -h
./DataGen.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not
found (required by ./DataGen.out)
./DataGen.out: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.14' not**
found (required by ./DataGen.out)
我已经定义并导出了LD_LIBRARY_PATH。
[cloudera@quickstart DataGenLinux]$ echo $LD_LIBRARY_PATH
/opt/google/chrome/lib/libstdc++.so.6
已解决
mv /usr/lib64/libsrdc++.so.6 /usr/lib64/libsrdc++.so.6_bkp
mv /opt/google/chrome/lib/libstdc++.so.6 /usr/lib64/libsrdc++.so.6
这解决了我的问题
答案 0 :(得分:1)
LD_LIBRARY_PATH
应该指向路径,而不是库。
这应该对您有用:
LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH ./myFile.out -h
或者,
export LD_LIBRARY_PATH=/opt/google/chrome/lib:$LD_LIBRARY_PATH
./myFile.out -h
请注意,这不涉及任何符号链接或替换系统库。
由于libstdc ++(以及glibc)是前向兼容的,所以最好针对您要支持的最旧版本进行编译/链接(如果您可以控制myFile.out
)。
寻找所需的libstdc ++版本的CentOS6软件包绝对更好。但是即使那样,您仍需要将加载器指向它,因为它不会代替系统/usr/lib64/libstdc++.so.6
,而是与其并存。
您提供的背景信息不多,所以我不确定您要使用的是什么。