CentOS编译安装gcc

编译安装gcc

升级前准备

下载需要的软件包

gcc软件包
	http://ftp.gnu.org/gnu/gcc/gcc-4.8.2

gcc依赖包
	ftp://gcc.gnu.org/pub/gcc/infrastructure
	gmp-4.3.2.tar.bz2
	mpc-0.8.1.tar.gz
	mpfr-2.4.2.tar.bz2

注意:若linux主机可以联网,则可以使用gcc-4.8.2目录下的contrib/download_prerequisites脚本自动下载

编译安装gcc

- linux服务器能上网
	# tar xf gcc-4.8.2.tar.gz
	# cd gcc-4.8.2
	# ./contrib/download_prerequisites

- linux服务器无法上网
	从【升级前准备】中给的“gcc依赖包”的下载地址中下载上面的三个软件包
	# tar xjf  gmp-4.3.2.tar.bz2
	# ln -sf gmp-4.3.2 gmp
	# tar xjf mpfr-2.4.2.tar.bz2
	# ln -sf mpfr-2.4.2 mpfr
	# tar xzf mpc-0.8.1.tar.gz 
	# ln -sf mpc-0.8.1 mpc

# 创建目录,用于存放编译后的文件,并编译gcc
	# mkdir gcc-build-4.8.2
	注意:编译时默认会在gcc软件包解压目录下查找此目录,也可指定目录,建议直接创建在gcc软件包的解压目录
	# cd gcc-build-4.8.2
	# ../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib
 	
	注意:前面的..表示会进入到上一层目录执行configure。所以gcc-build-4.8.2目录必须在gcc-4.8.2里面创建,也就是我们这样创建的。
		 如果你想自己定义gcc-build-4.8.2目录的位置,你要处理好这里的路径问题。不建议处理,一个安装过程而已,不必折腾,就按照上述方法弄就行了。
	# make -j 4 		# -j 4指定使用多线程进行编译,多线程会出错,建议单线程编译
	
# 安装gcc
	make install

# 验证是否安装成功
	安装完成后重启linux服务器,使用如下命令查看gcc版本
	# gcc -v 或 gcc --version
	# strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX

替换地版本gcc

系统自带低版本gcc文件位置为/usr/bin/gcc和/usr/bin/lib,此时需要将这两个部分删掉,或者后缀加上.bak,
然后通过建立软连接的方式替换系统默认位置的gcc、c++、g++文件。

# cd /usr/bin
# mv c++ /usr/bin/c++.bak
# ln -s /usr/local/bin/c++ /usr/bin/c++
# mv ./g++ ./g++.bak
# ln -s /usr/local/bin/g++ /usr/bin/g++
# mv ./gcc ./gcc.bak 
# ln -s /usr/local/bin/gcc /usr/bin/gcc

替换系统gcc动态链接库

# strings /usr/lib64/libstdc++.so.6 | grep GLIBC
输出结果如下, 可以看出,gcc的动态库还是处于旧版本,说明生成的动态库没有替换旧版本gcc的动态库
	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

查找编译gcc时生成的最新动态库。

# find / -name "libstdc++.so*"

列出了新版的gcc动态链接库位置。
/usr/local/lib64/libstdc++.so.6.0.18

将上面的最新动态库libstdc++.so.6.0.18复制到/usr/lib64目录下,并重新建立软连接。
# cp /usr/local/lib64/libstdc++.so.6.0.18 /usr/lib64 
# cd /usr/lib64/
# rm -f ./libstdc++.so.6
# ln -s libstdc++.so.6.0.18 libstdc++.so.6

再次查看gcc版本,以下结果表示动态库升级完成。
...
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
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值