在CentOS上更新GCC

1.我的机器原始是CentOS6.8 , 内核2.6.32. 在上一篇文章中已经简单更新升级内核;Redhat下需要自己手动编译安装内核,网上资料很多,就不详细描述了;【点击打开链接

2.升级完内核就准备升级GCC了。 在安装GCC之前需要更新几个库;

我的安装更新列表如下: mpfr-3.1.5.tar.gz ; mpc-1.0.3.tar.gz ; gmp-6.1.1.tar.tar     下载地址:点击打开链接

根据文件名找对应目录下的即可;

3.安装就没什么好说的了,都是套路安装;./configure; make ; make install(需要注意,安装注意顺序,有依赖关系)

4.下载gcc; 我下载了当前最新的版本6.2;GCC7.0还在研发中; 【点击打开链接

5.编译安装GCC; 上面的那三个包我是默认安装路径的;所以在/usr/local/lib下; 我需要把该路径加入到环境变量$LD_LIBRARY_PATH中;

编译../configure --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ ;

make(此处时间很长,大概需要1个小时左右); make install

默认安装后,不需要更新环境变量$PATH;旧的gcc也不需要更改,直接默认安装即可;因为路径中已经有了,旧的也已经该路径被覆盖掉了;

运行:gcc -v 查看当前版本;

然后我运行了之前旧的gcc编译过的程序,发现无法启动成功; 发现提示找不到64位的动态运行库;我就又把/usr/local/lib64添加到$LD_LIBRARY_PATH环境变量中了,可能是在安装gcc时环境变量被更改了;

再运行程序,发现等了一会(程序中包含ACE库,Boost库,定时器; jsoncpp; libconfig等第三方库)报错:

错误信息:symbol lookup error:./TestProgram : undefined symbol: _ZN4Json6Reader5parseERKNSt7__cxx1112basi

找不到特定第三方库的函数符号; 

nm XXX.so | grep 后,发现程序中的函数符合和动态库的函数符号不一致;需要在新的gcc环境下重新编译安装第三方库;

编译安装完成后,搞定;程序运行1天1夜,木毛病了;


你可能感兴趣的:(Linux)