没有root权限怎么解决GLIBCXX版本太低的问题 / gcc与GLIBCXX的版本对应

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuejisuo1948/article/details/88062832

总结一下,假如你在平台A编译的程序,放在平台B上跑:

  • 如果报错提示GLIBC版本低,那千万不要手动升级GLIBC,不然会出现很多问题,系统都有可能崩溃。最好的解决方案就是在平台B上重新编译。
  • 如果报错提示GLIBCXX版本低,那就有两种解决方案,要么在平台B重新编译,要么手动升级平台B的GLIBCXX。

————————————————分割线——————————————————

在租的服务器上跑程序,结果出现了:

libstdc++.so.6: version `GLIBCXX_3.4.20' not found

libstdc++.so.6: version `GLIBCXX_3.4.21' not found

原来是因为服务器的gcc版本太低,所以需要升级gcc

可是又没有root权限,没办法用yum来直接把相关的依赖包全部装好,只能去下载源码来一个一个编译安装。。

我装的是gcc5.3.0,可以在这个镜像站上找到所有的tar.gz包: http://mirror.hust.edu.cn/gnu/gcc/

gcc需要gmp4.2+  mpfr2.4.0+  mpc0.8.0+  链接就不放了

安装先后顺序:gmp、mpfr、mpc、gcc

安装这几个库时,在configure的时候有时需要添加依赖包的位置,例如在进行gcc的configure时,需要加上前三个库的安装位置:

./configure --with-gmp=安装gmp的绝对路径 --with-mpfr=安装mpfr的绝对路径 --with-mpc=安装mpc的绝对路径

 

然后再make、make install

make install的时候因为没root权限,所以记得在有权限的路径中安装:

make install DESTDIR=一个你拥有权限的路径

 

修改~/.bashrc,添加PATH和LD_LIBRARY_PATH

export PATH=装gcc的路径里的/usr/local/bin:$PATH
export LD_LIBRARY_PATH=/lib:/lib64:/usr/lib:/usr/lib64:/usr/local/lib:/usr/local/lib64
export LD_LIBRARY_PATH=装gcc的路径里的/usr/local/lib64:$LD_LIBRARY_PATH

再source ~/.bashrc

问题解决

————————————————————————————————————————

查看当前支持的GLIBC版本号的语句:

strings /lib/x86_64-linux-gnu/libc.so.6|grep GLIBC

查看当前支持的GLIBCXX版本号的语句:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6|grep GLIBCXX

目前已知的gcc版本与其最高支持的GLIBCXX的关系如下:

gcc GLIBCXX
4.4.7 3.4.17
4.8.5 3.4.19
5.2.0 3.4.21
7.3.0 3.4.25

 

展开阅读全文

QT4.6.3 与GCC版本问题

02-21

rn平台:FedoraCore 14 + AM335xrn下载qt-everywhere-opensource-src-4.8.4.tar.gz,解压后,rn分别复制三个文件夹 qt-src-4.8.4-arm、qt-src-4.8.4-x86、qt-src-4.8.4-X11rn进入qt-src-4.8.4-x86进行配置时,报警告rn$./configurern配置过程中报了很多gmake找不到的警告,如下rngmake: c:命令未找到rngmake: [qlinkedlist.o] 错误 127 (忽略)rnrn但是在终端下是有gmake命令的:rn$gmake -vrnGNU Make 3.82rnBuilt for i386-redhat-linux-gnurnCopyright (C) 2010 Free Software Foundation, Inc.rnLicense GPLv3+: GNU GPL version 3 or later rnThis is free software: you are free to change and redistribute it.rnThere is NO WARRANTY, to the extent permitted by law.rnrn$gcc -vrn使用内建 specs。rnCOLLECT_GCC=/usr/bin/gccrnCOLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-redhat-linux/4.5.1/lto-wrapperrn目标:i686-redhat-linuxrn配置为:../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,lto --enable-plugin --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-ppl --with-cloog --with-tune=generic --with-arch=i686 --build=i686-redhat-linuxrn线程模型:posixrngcc 版本 4.5.1 20100924 (Red Hat 4.5.1-4) (GCC)rnrn我试过了4.6.3、4.7.1、4.8.4都报相同的警告rnrn我把4.6.3拷贝到另一个宿主机上,就可以正确配置,其gcc版本为4.1.2rn想问下,4.5.1的gcc就不能配置qt了嘛?rn是版本不配,还是其他问题?rn没分了,真不好意思了 论坛

没有更多推荐了,返回首页