CentOS 6下gcc升级的操作记录(由默认的4.4.7升级到6.4.0版本)

### CentOS 6下GCC升级至6.4.0版本的操作步骤及注意事项 #### 背景介绍 在CentOS 6.9系统中,原始安装的GCC版本为4.4.7,对于某些依赖于较新C++特性的应用程序(如使用C++11标准的应用),原生GCC版本可能无法满足需求。因此,在本篇文档中,我们将详细介绍如何将CentOS 6.9中的GCC版本从4.4.7升级到6.4.0版本。 #### 查看当前系统与GCC版本 1. **查看系统版本**: ```bash [root@uatjenkins01 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) ``` 2. **查看默认GCC版本**: ```bash [root@uatjenkins01 ~]# gcc --version gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18) ``` 3. **查看默认动态库**: ```bash [root@uatjenkins01 ~]# strings /usr/lib64/libstdc++.so.6 | grep GLIBC GLIBCXX_3.4 GLIBCXX_3.4.1 GLIBCXX_3.4.2 GLIBCXX_3.4.3 ... GLIBC_2.2.5 GLIBC_2.3 GLIBC_2.4 GLIBC_2.3.2 GLIBCXX_FORCE_NEW GLIBCXX_DEBUG_MESSAGE_LENGTH ``` 该步骤用于确认当前系统的GCC版本以及支持的库版本,为后续的升级做准备。 #### 验证GCC版本不足的问题 为了验证当前版本的GCC不支持C++11的新特性,进行了以下测试: ```bash [root@uatjenkins01 ~]# vim /tmp/tryCpp11.cc // 文件内容如下: #include <iostream> #include <memory> int main() { std::shared_ptr<int> pInt(new int(5)); std::cout << *pInt << std::endl; return 0; } ``` 尝试编译上述代码: ```bash [root@uatjenkins01 tmp]# g++ -std=c++11 -o tryCpp11 tryCpp11.cc cc1plus: error: unrecognized command line option "-std=c++11" ``` 结果显示,当前版本的GCC不支持C++11标准,这是升级的直接原因。 #### GCC的下载与编译 1. **安装xz工具**: ```bash [root@uatjenkins01 ~]# yum -y install xz ``` 2. **下载GCC源码**: ```bash [root@uatjenkins01 ~]# cd /usr/local/src/ [root@uatjenkins01 src]# wget http://ftp.gnu.org/gnu/gcc/gcc-6.4.0/gcc-6.4.0.tar.xz [root@uatjenkins01 src]# tar -xf gcc-6.4.0.tar.xz -C /usr/src [root@uatjenkins01 src]# cd /usr/src/gcc-6.4.0 [root@uatjenkins01 gcc-6.4.0]# ./contrib/download_prerequisites ``` 在编译过程中,GCC会自动下载一些依赖包,如mpfr、gmp、mpc和isl等。如果网络不稳定,可能导致下载失败。为了避免这种情况,可以在编译前手动下载这些依赖包,并放置在指定目录下: ```bash [root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/mpfr-2.4.2.tar.bz2 ./ [root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/gmp-4.3.2.tar.bz2 ./ [root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/mpc-0.8.1.tar.gz ./ [root@uatjenkins01 gcc-6.4.0]# cp /usr/local/src/isl-0.15.tar.bz2 ./ ``` 3. **配置GCC编译选项**: 根据具体需求,可以通过`./configure`命令来配置编译选项。例如,为了确保新版本的GCC能够正确链接到系统库,可以使用如下命令进行配置: ```bash [root@uatjenkins01 gcc-6.4.0]# ./configure --prefix=/usr --enable-bootstrap --enable-languages=c,c++,fortran --disable-multilib --enable-shared --enable-threads=posix --with-system-zlib --enable-checking=release --enable-cxx-flags="-D_GLIBCXX_USE_CXX11_ABI=1" ``` 注意其中的`--enable-cxx-flags="-D_GLIBCXX_USE_CXX11_ABI=1"`是为了兼容新旧ABI。 4. **编译并安装GCC**: ```bash [root@uatjenkins01 gcc-6.4.0]# make && make install ``` #### 后续操作 完成上述步骤后,新的GCC版本已经安装到了系统中。但是,需要注意的是,此时系统默认的GCC仍然是旧版本。为了使新版本生效,还需要进行以下操作: 1. **更新环境变量**: 将新版本GCC的路径添加到PATH环境变量中,确保在执行GCC命令时能够调用到正确的版本。 ```bash [root@uatjenkins01 ~]# echo 'export PATH=/usr/local/bin:$PATH' >> /etc/profile [root@uatjenkins01 ~]# source /etc/profile ``` 2. **验证GCC版本**: 可以通过`gcc --version`命令来验证是否成功升级到目标版本。 ```bash [root@uatjenkins01 ~]# gcc --version gcc (GCC) 6.4.0 ``` 通过上述步骤,我们成功地将CentOS 6.9中的GCC版本从4.4.7升级到了6.4.0,这将有助于解决因旧版本GCC导致的C++11特性支持问题。

































- FL16238631292024-01-11不好使 #毫无价值

- 粉丝: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 简析智慧城市对档案馆档案信息化的影响与创.docx
- 电力营销工程项目管理的重要性和创新改进研究.docx
- 基于单片机的多功能电子日历的设计.doc
- 计算机网络的维护工作及管理研究.docx
- 大数据时代下政府统计工作面临的机遇和挑战.docx
- 电子科技大学远程教育计算机应用基础专科作业三.doc
- 软件系统解决方案.docx
- 如何用Photoshop美白牙齿.doc
- PLC全自动洗衣机控制系统设计方案5.doc
- 单片机课程研究设计报告—简易计算器.doc
- 1553B总线接口模块测试设备设计方案与实现.doc
- xx高速公路通信管道工程分项施工专业技术方案.doc
- 《管理学原理》课程嵌入式Seminar+案例教学模式学生满意度评价.docx
- 大数据时代远程教育思政课程教学改革探析.docx
- 医院信息化工作总结和明年工作计划.doc
- 基于SPOC教学模式的计算机创新人才培养改革与实践.docx


