1 gcc-7.3.0安装
GCC下载地址:ftp://gcc.gnu.org/pub/gcc/releases/
下载gcc-7.3.0后可以解压查看./contrib/download_prerequisites里面有依赖包路径。
科大开源镜像站 GCC源码
https://mirrors.ustc.edu.cn/gnu/gcc/
下载gcc-7.3.0
wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-7.3.0/gcc-7.3.0.tar.gz
>解压&进入目录
tar -xf gcc-7.3.0.tar.gz
cd gcc-7.3.0
运行 download_prerequisites 脚本, 注意,因为已下载文件,所以注释文件底部的fetch和checknum那两个for循环,
./contrib/download_prerequisites
建立编译输出目录,将所有的中间文件都放到该目录
mkdir gcc-build-7.3.0
cd gcc-build-7.3.0
配置
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
参数解释:
–enable-checking=release 增加一些检查,也可以–disable-checking生成的编译器在编译过程中不做额外检查
–enable-languages=c,c++ 你要让你的gcc支持的编程语言
–disable-multilib 取消多目标库编译(取消32位库编译)
编译
sudo make
这个编译了我一个小时,建议你看个电影
编译完成之后,需要把原来的GCC卸载,换成7.3.0版本的
找到已安装的gcc和gcc-c++包
rpm -q gcc
rpm -q gcc-c++
删除已经安装低版本
rpm -e [包名]
包名为上一步中显示的包,形如:
gcc-4.8.5-16.el7_4.2.x86_64
gcc-c++-4.8.5-16.el7_4.2.x86_64
那就删除吧
rpm -e gcc-4.8.5-16.el7_4.2.x86_64
rpm -e gcc-c++-4.8.5-16.el7_4.2.x86_64
安装
sudo make install
验证版本
查看gcc的安装位置:which gcc
然后再查看版本 /usr/local/bin/gcc -v,通常gcc都安装在该处位置
对了,还有一点,我直接尝试gcc -v的时候,提示没有找到命令,应该是系统变量中没有,那就手动添加一下gcc的安装目录
直接用export命令:
export PATH=$PATH:/usr/local/bin
查看是否已经设好,可用命令export查看,或者直接echo $PATH
这个应该更靠谱一点,要不然有时候sudo的时候会提示找不到gcc命令
sudo ln -s /usr/local/bin/gcc /usr/bin/gcc
(建立/usr/bin/gcc到编译安装gcc的软链接)
升级成功,enjoy~
原文链接:https://blog.csdn.net/RBPicsdn/article/details/79565383
2 补充 gcc-5.4.0安装,gcc5.4.0/contrib/download_prerequisites
参考链接:https://blog.csdn.net/weixin_40420213/article/details/78687540
参考链接:https://blog.csdn.net/l919898756/article/details/82143438
####### LOOK!!!
# Befor everything, you know jupyter-lab, just do "sudo ln -s /usr/bin/_mv /usr/bin/mv", to recover "mv"
# download 'gcc-5.4.0.tar.gz' 'gmp-4.3.2.tar.bz2' 'mpfr-2.4.2.tar.bz2' 'mpc-0.8.1.tar.gz' 'isl-0.14.tar.bz2'
# cd /usr/local/src
# sudo cp gcc-5.4.0.tar.gz /usr/local/src
# sudo tar -xf gcc-5.4.0.tar.gz
# cd gcc-5.4.0
# sudo cp /where-you-download/gmp-4.3.2.tar.bz2 /usr/local/src/gcc-5.4.0
# sudo cp /where-you-download/mpfr-2.4.2.tar.bz2 /usr/local/src/gcc-5.4.0
# sudo cp /where-you-download/mpc-0.8.1.tar.gz /usr/local/src/gcc-5.4.0
# sudo cp /where-you-download/isl-0.14.tar.bz2 /usr/local/src/gcc-5.4.0
####### I have modified the /contrib/download_prerequisites, just this file, so just replace it,now
# cd ./contrib
# sudo rm -rf download_prerequisites(old, origin)
# sudo cp /where-you-download-and-modify/download_prerequisites .
# sudo chmod 755 download_prerequisites
# cd ..
# sudo ./contrib/download_prerequisites
####### we make a dir to save the build
# cd ..
# sudo mkdir gcc-build-5.4.0
# cd gcc-build-5.4.0
# sudo ../gcc-5.4.0/configure --prefix=/usr/local/gcc-5.4.0 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++
# sudo make -j4
# sudo make install
####### /** 备份gcc-4.4.7 */
# mkdir /usr/gcc447backup/
# mv /usr/bin/{gcc,g++} /usr/gcc447backup
# ln -s /usr/local/gcc-5.4.0/bin/gcc /usr/bin/gcc
# ln -s /usr/local/gcc-5.4.0/bin/g++ /usr/bin/g++
# sudo gcc -v
————————————————
版权声明:本文为CSDN博主「哪托的轮滑鞋」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40420213/article/details/78687540
原文链接:https://blog.csdn.net/weixin_40420213/article/details/78687540
####### OVER!!!
3 ldconfig报错 :libstdc++.so.6.0.18-gdb.py不是一个elf文件, 我没有管它
ldconfig报错 :libstdc++.so.6.0.18-gdb.py不是一个elf文件, 我没有管它。。。。
这有个老帖,博主这样做,可参考。。。
今天安装wxWidgets,输入ldconfig竟然提示
/usr/lib64/libstdc++.so.6.0.18-gdb.py 不是一个elf文件,开头魔数错误
摸不着头脑,上网搜了一下,有说是gnu自己的错误,不过解决方法倒也简单,直接删除该文件
sudo rm /usr/lib64/libstdc++.so.6.0.18-gdb.py
再次ldconfig
整个世界清静了
未明白什么原因导致错误,但是后续安装其他东东都运行正常
两个参考链接:
http://blog.csdn.net/deltatang/article/details/8455473
http://ericjmritz.name/2013/08/24/ldconfig-usrliblibstdc-so-6-0-18-gdb-py-error/
————————————————
原文链接:https://blog.csdn.net/alading2009/article/details/20771117
4 Linux-GLIBCXX版本过低导致编译错误–version `GLIBCXX_3.4.20’ not found
1)检查了gcc版本:gcc --version 得到结果gcc (GCC) 4.9.2 已经比较新;
2)strings /usr/lib64/libstdc++.so.6 |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_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_DEBUG_MESSAGE_LENGTH
3)sudo find / -name libstdc++.so.6* 得到结果:
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.13-gdb.py
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyc
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.pyo
/usr/share/gdb/auto-load/usr/lib/libstdc++.so.6.0.13-gdb.py
/usr/lib64/libstdc++.so.6.bak
/usr/lib64/libstdc++.so.6.0.17
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so.6.0.18
/usr/local/lib64/libstdc++.so.6.0.18-gdb.py
/usr/local/lib64/libstdc++.so.6.0.20
/usr/local/lib64/libstdc++.so.6.0.20-gdb.py
/usr/local/lib64/libstdc++.so.6
可以看到,已经有libstdc++.so.6.0.20
4)ls -al /usr/lib64/libstdc++.so.6 得到结果:
lrwxrwxrwx. 1 root root 30 11月 16 11:31 /usr/lib64/libstdc++.so.6 -> /usr/lib64/libstdc++.so.6.0.17
说明虽然gcc已经更新到最新版,但是连接还是旧版本,所以只需要修改连接就可以了。
解决方案步骤:
1)sudo cp /usr/local/lib64/libstdc++.so.6.0.20 /usr/lib64 //复制文件
2)sudo rm -rf /usr/lib64/libstdc++.so.6 //删除旧文件
3)sudo ln -s /usr/lib64/libstdc++.so.6.0.20 /usr/lib64/libstdc++.so.6 //链接到新版本
原文链接:https://www.cnblogs.com/twinhead/p/9248745.html