libstdc++.so.6: version `GLIBCXX_*.*.*' not found

来源:互联网 发布:淘抢火车票软件 编辑:程序博客网 时间:2024/05/01 14:55

最近在一个RHEL6 64bit平台上编译的cmake拿到另外一台RHEL6 64bit上的server上跑不起来,报下面的错。

[root@localhost ~]# /opt/cmake/x86_64/2.8.2/bin/cmake #我这里把cmake安装在/opt目录下面/opt/cmake/x86_64/2.8.2/bin/cmake: /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /opt/cmake/x86_64/2.8.2/bin/cmake)/opt/cmake/x86_64/2.8.2/bin/cmake: /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/cmake/x86_64/2.8.2/bin/cmake)
因为cmake需要依赖libstdc++.so.6动态库,因为我这里设置了LD_LIBRARY_PATH,就寻找到了我自己的gcc版本,而不从系统目录去找libstdc++.so.6

[root@localhost ~]# ldd /opt/cmake/x86_64/2.8.2/bin/cmake #查看cmake的动态依赖库/opt/cmake/x86_64/2.8.2/bin/cmake: /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by /opt/cmake/x86_64/2.8.2/bin/cmake)/opt/cmake/x86_64/2.8.2/bin/cmake: /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/cmake/x86_64/2.8.2/bin/cmake)        linux-vdso.so.1 =>  (0x00007fff7f1fe000)        libdl.so.2 => /lib64/libdl.so.2 (0x0000003dc0a00000)        libz.so.1 => /lib64/libz.so.1 (0x0000003dc1200000)        libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x0000003dc3600000)        libstdc++.so.6 => /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6 (0x00007f06c0cc6000)        libgcc_s.so.1 => /opt/gcc/x86_64/4.1.2-2/lib64/libgcc_s.so.1 (0x00007f06c0ab8000)        libc.so.6 => /lib64/libc.so.6 (0x0000003dc0200000)        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003dc0e00000)        /lib64/ld-linux-x86-64.so.2 (0x0000003dbfe00000)        libidn.so.11 => /lib64/libidn.so.11 (0x0000003dc3200000)        libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x0000003dc2e00000)        librt.so.1 => /lib64/librt.so.1 (0x0000003dc1600000)        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003dcb200000)        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003dcbe00000)        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003dc9a00000)        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003dc8a00000)        libssl3.so => /usr/lib64/libssl3.so (0x0000003dd0e00000)        libsmime3.so => /usr/lib64/libsmime3.so (0x0000003dd1200000)        libnss3.so => /usr/lib64/libnss3.so (0x0000003dd0200000)        libnssutil3.so => /usr/lib64/libnssutil3.so (0x0000003dcf600000)        libplds4.so => /lib64/libplds4.so (0x0000003dcfe00000)        libplc4.so => /lib64/libplc4.so (0x0000003dcfa00000)        libnspr4.so => /lib64/libnspr4.so (0x0000003dd0600000)        libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x0000003dc3a00000)        libm.so.6 => /lib64/libm.so.6 (0x0000003dc0600000)        liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x0000003dc2a00000)        libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003dc2200000)        libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x0000003dd1e00000)        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003dcb600000)        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003dca200000)        libssl.so.10 => /usr/lib64/libssl.so.10 (0x0000003dc9200000)        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x0000003dc8e00000)        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003dcea00000)        libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003dc1e00000)        libfreebl3.so => /lib64/libfreebl3.so (0x0000003dcee00000)[root@localhost ~]# echo $LD_LIBRARY_PATH #我这里设置了LD_LIBRARY_PATH/opt/gcc/x86_64/4.1.2-2/lib:/opt/gcc/x86_64/4.1.2-2/lib64:
这里主要是我编译cmake所依赖的系统gcc的libstdc++.so.6里面包含有GLIBCXX_3.4.9和GLIBCXX_3.4.11,而提供的gcc里面的libstdc++.so.6不包含GLIBCXX_3.4.9和GLIBCXX_3.4.11
[root@rhel6164 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC #查看我编译cmake平台系统libstdc++.so.6包含的GLIBC版本GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBCXX_3.4.9GLIBCXX_3.4.10GLIBCXX_3.4.11GLIBCXX_3.4.12GLIBCXX_3.4.13GLIBC_2.2.5GLIBC_2.3GLIBC_2.4GLIBC_2.3.2GLIBCXX_FORCE_NEWGLIBCXX_DEBUG_MESSAGE_LENGTH[root@localhost ~]# strings /opt/gcc/x86_64/4.1.2-2/lib64/libstdc++.so.6 | grep GLIBC #查看运行cmake平台我自己编译的gcc的libstdc++.so.6包含的GLIBC版本GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBCXX_3.4.7GLIBCXX_3.4.8GLIBC_2.3GLIBC_2.2.5GLIBCXX_FORCE_NEW
我这里有两种办法解决这个问题,最简单的办法就是unset LD_LIBRARY_PATH,让cmake不去找我自己编译的gcc下面的libstdc++.so.6,而去找系统下面的;另一个办法就是使用我自己编译的gcc去重新编译cmake。


0 0
原创粉丝点击