||
我们在做计算的过程中可能会遇到GCC版本过低的问题,如果使用的计算机系统没有root权限则有时候很难解决所遇到的找不到高版本libstdc++.so.6动态库的问题。这里笔者根据自己的经验总结了在没有root权限且没有网络连接时,离线安装GCC 12版本的详细过程,分享给大家并且方便自己查看。
1. 下载安装包和依赖包
首先下载GCC,各个版本的安装包可以在这个链接中找到:https://ftp.gnu.org/gnu/gcc/
下载后将安装包上传到计算机系统,然后解压安装包并cd到解压后的文件夹下:
tar -Jxf gcc-12.2.0.tar.xz cd gcc-12.2.0
可以通过下述命令查看依赖:
vi contrib/download_prerequisites
gcc-12.2.0的依赖如下所示:
#------------------------------------
gmp='gmp-6.2.1.tar.bz2'
mpfr='mpfr-4.1.0.tar.bz2'
mpc='mpc-1.2.1.tar.gz'
isl='isl-0.24.tar.bz2'
#------------------------------------
上面各种依赖包的下载地址为:https://gcc.gnu.org/pub/gcc/infrastructure/
将上述依赖包下载后上传至gcc-12.2.0目录下,然后执行下述命令:
./contrib/download_prerequisites
2. 安装GCC
首先创建build文件夹并进入该文件夹:
mkdir build && cd build
然后配置安装目录,因为没有root权限,--prefix后需要指定可访问的目录:
../configure --prefix=/home/mypath/gcc/gcc12_install/ --disable-multilib
这里加--disable-multilib是为了只安装64位版本
最后执行安装:
make -j 24 make install
3. 设置环境变量
创建一个存放环境变量的文档,如env_gcc12.sh,将下列几行按照顺序放在该文档中。
#!/bin/bash export GCCHOME=/home/mypath/gcc/gcc12_install export PATH=$GCCHOME/bin:$PATH export LD_LIBRARY_PATH=$GCCHOME/lib64 export C_INCLUDE_PATH=$GCCHOME/include/ export CPLUS_INCLUDE_PATH=$GCCHOME/include/ export LD_PRELOAD=$GCCHOME/lib64/libstdc++.so.6:$LD_PRELOAD |
其中LD_PRELOAD是为了优先加载我们需要的动态库,可以有效解决类似下面的报错:“libstdc++.so.6: version `GLIBCXX_3.4.20' not found”。
在使用这个安装的GCC时只需要执行命令:source env_gcc12.sh。笔者建议把这个文档放在根目录,然后在计算脚本中加入:source ~/env_gcc12.sh,这样方便使用。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-9-27 06:28
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社