GCC从4.4.7升级到6.1.0
2017-01-07 00:00
288 查看
=======升级gcc
系统信息
[lsug@172-16-1-105 ~]$ uname -a
Linux 172-16-1-105 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[lsug@172-16-1-105 ~]$ cat /etc/redhat-release
CentOS release 6.7 (Final)
1.查看gcc的版本
[lsug@Minion node-6.9.4]$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../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-languages=c,c++,objc,obj-c++,java,fortran,ada --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_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
2-获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
tar -jxvf gcc-6.1.0.tar.bz2
3-下载供编译需求的依赖项
cd gcc-6.1.0
./contrib/download_prerequisites
3、 建立一个目录供编译出的文件存放
mkdir gcc-build-6.1.0
cd gcc-build-6.1.0
4、 生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5、 编译(此步骤非常耗时)
make -j4
-j4选项是make对多核处理器的优化,如果不成功请使用 make
查看安装
ls /usr/local/bin | grep gcc
[lsug@minion ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 6.1.0 (GCC)
=============
升级
源码编译升级安装了
运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,
查找编译
find / -name "libstdc++.so*"
将上面的最新动态库
cd /usr/lib64
sudo cp /home/lsug/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.22 libstdc++.so.6
默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有"GLIBCXX_3.4.22" 了
系统信息
[lsug@172-16-1-105 ~]$ uname -a
Linux 172-16-1-105 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[lsug@172-16-1-105 ~]$ cat /etc/redhat-release
CentOS release 6.7 (Final)
1.查看gcc的版本
[lsug@Minion node-6.9.4]$ gcc -v
Using built-in specs.
Target: x86_64-redhat-linux
Configured with: ../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-languages=c,c++,objc,obj-c++,java,fortran,ada --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_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC)
2-获取安装包并解压
wget http://ftp.gnu.org/gnu/gcc/gcc-6.1.0/gcc-6.1.0.tar.bz2
tar -jxvf gcc-6.1.0.tar.bz2
3-下载供编译需求的依赖项
cd gcc-6.1.0
./contrib/download_prerequisites
3、 建立一个目录供编译出的文件存放
mkdir gcc-build-6.1.0
cd gcc-build-6.1.0
4、 生成Makefile文件
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
5、 编译(此步骤非常耗时)
make -j4
-j4选项是make对多核处理器的优化,如果不成功请使用 make
6、 安装(需要root权限)
sudo make install查看安装
ls /usr/local/bin | grep gcc
7、 重启,然后查看gcc版本
reboot[lsug@minion ~]$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/x86_64-pc-linux-gnu/6.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
Thread model: posix
gcc version 6.1.0 (GCC)
=============
升级
gcc,生成的动态库没有替换老版本
gcc的动态库
源码编译升级安装了
gcc后,编译程序或运行其它程序时,有时会出现类似
/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found的问题。这是因为升级
gcc时,生成的动态库没有替换老版本
gcc的动态库导致的,将
gcc最新版本的动态库替换系统中老版本的动态库即可解决。
运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
从输出可以看出,
gcc的动态库还是旧版本的。说明出现这些问题,是因为升级
gcc时,生成的动态库没有替换老版本
gcc的动态库。
查找编译
gcc时生成的最新动态库:
find / -name "libstdc++.so*"
将上面的最新动态库
libstdc++.so.6.0.22复制到
/usr/lib64目录下
cd /usr/lib64
sudo cp /home/lsug/gcc-6.1.0/gcc-build-6.1.0/stage1-x86_64-pc-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.22 ./
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.22 libstdc++.so.6
默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
可以看到 输出有"GLIBCXX_3.4.22" 了
相关文章推荐
- centos6.5升级gcc 4.4.7为最新版4.9.1
- gcc-4.4.7升级到gcc-4.8.2
- Centos升级gcc4.4.7升级gcc4.8手记
- Linux(CentOS 6.5) 手动升级gcc到gcc-6.1.0
- CentOS升级gcc4.4.7到gcc-7.2.0
- gcc4.1.2通过rpm包升级gcc4.4.7
- Linux中 CentOS 6.5 手动升级gcc到gcc-6.1.0
- 升级gcc4.4.7升级gcc4.8
- 在RHEL 6.4 x86_64平台上把编译器从gcc-4.4.7-3.el6.x86_64升级到最新版的编译器gcc-4.8.2
- centos5.8 x86_64 gcc升级到4.4.7解决了编译32位程序的问题
- CentOS升级gcc4.4.7到gcc4.8.5
- 在oracle linux 6.7升级gcc,从4.4.7到5.2.0
- gcc 升级到6.1.0
- Centos升级gcc4.4.7升级gcc4.8手记
- Centos升级gcc4.4.7升级gcc4.8
- gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)升级gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-4)
- Linux-使用 yum 升级 gcc 到 4.8
- CENTOS 6 通过YUM升级GCC到4.7/4.8
- 关于gcc、glibc和binutils模块之间的关系,以及在现有系统上如何升级的总结
- CentOS操作系统 GCC升级到4.6.1