CentOS6升级gcc4.9

前段时间在CentOS6集群上跑TensorFlow的时候遇到了glibc和gcc版本过低的问题。本篇讲升级gcc。

问题

如果你的gcc版本过低,在跑一些比较新的软件的时候,可能会报这样的错误:

1
libstdc++.so.6: version CXXABI_1.3.7’ not found

那么你就需要更新gcc了,因为CXXABI_x是包含在gcc的libstdc++中的。

查看你的gcc版本

1
gcc -v

查看libstdc++版本

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

安装必要依赖包

1
yum install gcc gcc-c++ automake autoconf libtool make

下载和解压

1
2
wget ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.2/gcc-4.9.2.tar.bz2
tar xf gcc-4.9.2.tar.bz2

如果直接从官网下载的话,因为国内网络问题,会慢到怀疑人生。这里提供一个网盘地址。 链接:https://pan.baidu.com/s/1X3cv2eUBh1ViUWOeUQtrCg 密码:ya2y

下载内置依赖

1
2
cd gcc-4.9.2
./contrib/download_prerequisites

同样的,下载速度依然龟速。依赖文件包含在上面的网盘地址里了,你可以一并下载下来,再上传到服务器。

打开download_prerequisites这个脚本,发现里面的工作就是下载了几个依赖包到gcc目录外,然后解压,并构建软连接到当前gcc目录。

既然如此,我们就照猫画虎的执行就好了。

1
2
3
4
5
6
7
8
tar xf  ../mpfr-2.4.2.tar.bz2
ln -sf mpfr-2.4.2 mpfr

tar xf ../gmp-4.3.2.tar.bz2
ln -sf gmp-4.3.2 gmp

tar xf ../mpc-0.8.1.tar.gz
ln -sf mpc-0.8.1 mpc

编译安装

1
./configure  --prefix=/usr  --enable-languages=c,c++ --enable--long-long --enable-threads=posix --disable-checking --disable-multilib

-j 4 表示开4个线程去编译,一般编译时间大概是20分钟左右。请确保你的系统剩余空间大于6G。如果期间出了错误,一般是缺少依赖和必要库,把依赖安装完后再次执行即可。

1
2
make -j4
make install

安装完后,去检查版本是否为4.9.2。

发现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Libraries have been installed in:
/usr/lib/../lib64

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

安装完后,会打印这样一段话。这段话的大概意思是linux不会自动去你自己指定的安装目录寻找gcc,你需要在环境变量中设置gcc的安装目录,比如:

1
LD_LIBRARY_PATH=/your_gcc_path/

但是,我们不需要这么干,因为我们安装的时候,路径配置到了gcc的缺省路径上了。

双深度Q网络 CentOS6升级glibc2.17

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×