Kylin操作系统升级GCC 4.4.7 到 4.8.5
Linux系统gcc升级(以国产kylin系统为例)1、获取gcc4.8.5的源码包(文件存放于root根目录)1.1服务器联网情况下执行# wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.5/gcc-4.8.5.tar.gz1.2断网情况下执行手动下载 gcc-4.8.5.tar.gz包,然后上传。2、解压压缩包# tar –zxvf gcc-4.8.5.tar.
Linux系统gcc升级
(以国产kylin系统为例)
1、获取gcc4.8.5的源码包
(文件存放于root根目录)
1.1服务器联网情况下执行
1.2断网情况下执行
手动下载 gcc-4.8.5.tar.gz包,然后上传。
2、解压压缩包
# tar –zxvf gcc-4.8.5.tar.gz
3、下载、配置和安装需要的依赖库
(文件存放于root根目录)
3.1服务器联网情况下执行
# cd gcc-4.8.5/
# ./contrib/download_prerequisites //该脚本会自动下载、配置、安装依赖库
3.2断网情况下执行
否则需要手动下载gmp-4.3.2.tar.gz、mpfr-2.4.2.tar.gz、mpc-0.8.1.tar.gz,然后上传。然后安装和配置。
(1)安装gmp
首先安装gmp,命令如下:
# tar -xvzf gmp-4.3.2.tar.gz
# mv gmp-4.3.2/ gcc-4.8.5/
# cd gcc-4.8.5
# ln –sf gmp-4.3.2 gmp
(2)安装mpfr
命令如下:
# tar -xvzf mpfr-2.4.2.tar.gz
# mv mpfr-2.4.2/ gcc-4.8.5/
# cd gcc-4.8.5/
# ln –sf mpfr-2.4.2 mpfr
(3)安装mpc
# tar -xvzf mpc-0.8.1.tar.gz
# mv mpc-0.8.1/ gcc-4.8.5
# cd gcc-4.8.5
# ln –sf mpc-0.8.1 mpc
3.3 配置环境变量
执行 vim /etc/profile 编辑环境变量配置文件,直接在文件最后添加一行下面的变量:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/gcc-4.8.5/mpc:/root/gcc-4.8.5/gmp: /root/gcc-4.8.5/mpfr
上面的路径要和实际安装时的路径一致,保存并退出后,执行 source /etc/profile 使环境变量生效
4、建编译后的存放目录
# mkdir gcc-build-4.8.5
5、生成Makefile文件
# cd gcc-build-4.8.5
# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
6、执行make
# make(耗时较长,需耐心等待)
7、八.安装
# make install
8、重启操作系统
执行系统重启命令:
# reboot //一定要重启
校验新版本安装是否生效:
# gcc -v
# g++ -v
9、库升级
编译程序或运行其它程序时,有时会出现类似:
/usr/lib64/libstdc++.so.6: version`GLIBCXX_3.4.21' not found
的问题。这是因为升级gcc时,生成的动态库没有替换老版本gcc的动态库导致的,将gcc最新版本的动态库替换系统中老版本的动态库即可解决。
9.1 检查
# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
9.2 找到 gcc 4.8.5 最新的库文件
# find / -name "libstdc++.so*"
/usr/lib64/libstdc++.so.6.0.13
/usr/lib64/libstdc++.so.6
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.4.4/libstdc++.so
/usr/lib/vmware-tools/lib64/libstdc++.so.6
/usr/lib/vmware-tools/lib64/libstdc++.so.6/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6
/usr/lib/vmware-tools/lib32/libstdc++.so.6/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/local/lib64/libstdc++.so.6.0.19
/usr/local/lib64/libstdc++.so.6
/usr/local/lib64/libstdc++.so
/usr/local/lib64/libstdc++.so.6.0.19-gdb.py
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/opt/gcc-4.8.5/gcc-build-4.8.5/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
上面粗体加黑的libstdc++.so.6.0.19,就是目前4.8.5的新的库文件了。
9.3 复制这个库文件到指定目录并修改软连接
# cp /opt/gcc-4.8.5/gcc-build-4.8.5/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.19 /usr/lib64
# cd /usr/lib64
# rm libstdc++.so.6
# ln -s libstdc++.so.6.0.19 libstdc++.so.6
9.4 检查一遍
# strings /usr/lib64/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
...
10、 卸载系统自带的gcc
以root用户执行:rpm -qa |grep gcc | xargs rpm -e --nodeps
11、 修改ld.so.conf文件
# vi /etc/ld.so.conf
然后在文件最下面添加:(标红的路径需要和实际的路径一致)
/usr/local/lib
/usr/local/lib64
保存,退出后。执行:
# ldconfig /etc/ld.so.conf
如果有报错,需要删除/usr/local/lib64/libstdc++.so.6.0.19.py文件,命令如下:
# cd /usr/local/lib64
# rm –rf libstdc++.so.6.0.19.py
再次执行:
# ldconfig /etc/ld.so.conf
使其生效
更多推荐
所有评论(0)