图片来源于网络
问题场景:
平常使用python安装包时,同时会用到gcc/g++造轮子进行安装,但当我们在公司企业的服务器集群上进行操作时,我们一般都是非root用户,无法对/bin或/lib目录进行更改,无法更新相应文件夹下对应软件的链接。conda为我们提供了环境的隔离,如何为用户配置conda内下载的指定版本gcc呢?甚至做到多环境gcc/g++版本共存,在有需要时快速切换!
解决思路:
1.下载gcc/g++至conda环境
一般,通过conda下载gcc及g++可通过如下命令(在对应的conda环境env中):
conda install -c moussi gcc_impl_linux-64
conda install -c moussi gxx_impl_linux-64
当需要下载指定版本时,如下载8.4.0版本,我们可以在包名称后加=<版本号>即可,如:
conda install -c moussi gcc_impl_linux-64=8.4.0
等待下载完成(可以加入-y参数,这样之后下载的过程中就不用输入y同意继续下载了)
这里可以用-y搭配nohup免于操心漫长的下载过程。
2.配置环境变量
因为conda下载类似的内容后会把对应内容的软连接(可以理解为windows的快捷方式)添加至bin或lib目录,我们需要将两个目录添加至环境变量:
# 这里假设你的conda环境(环境名称yourEnv)路径为 /custom/conda/envs/yourEnv/
# 如果是base环境则对应 /custom/conda/
export PATH=/custom/conda/envs/yourEnv/bin/:$PATH
# gcc/g++在bin目录下,有的下载会在lib目录下
# 所以如果你想以conda作为你的整体环境,可以同时配置如下环境变量
export PATH=/custom/conda/envs/yourEnv/lib/:$PATH
一般用如下命令查看gcc/g++版本来检验配置是否成功
gcc -v
g++ -v
# 你会发现他们输出的都是gcc的版本,一般二者是版本相配的,所以输出保持一致
你会发现是失败的,还是老的gcc/g++,这里是较难发现的地方!被conda坑了
因为conda下载后的gcc/g++并不以gcc/g++命名,而是有如下对应:
gcc: x86_64-conda-linux-gnu-cc
g++: x86_64-conda-linux-gnu-c++
因为没发现这个,在此卡了很久(因为平常只需要添加PATH环境变量即可)
所以我们可以用如下命令再新建软连接,这样gcc/g++才能被你识别到,否则你就需要输入一长串来执行了!
x86_64-conda-linux-gnu-cc -v
而python之类的所用的命令是gcc/g++,而不是这一长串,所以必须配置新的软连接!保证名字是gcc/g++!
3.为gcc/g++建立软连接(坑)
建立软连接命令(${bin}代表你的conda环境bin目录):
# cd转至你conda下载gcc/g++的bin目录,通过pwd获得目录路径赋值
bin=`pwd`
# 或者使用 bin=你的bin目录路径
ln -s ${bin}/x86_64-conda-linux-gnu-cc ${bin}/gcc
ln -s ${bin}/x86_64-conda-linux-gnu-c++ ${bin}/g++# ln -s <源文件路径> <建立软连接路径>
至此配置完毕,若你的export PATH配置正确,再次调用gcc -v
你会发现这样就配置完成了!
4.export PATH添加至.bashrc
为了避免每次SSH登录都需要重复配置PATH,可以将如下代码添加至你的用户目录的.bashrc启动文件中,通过 vim ~/.bashrc 打开编辑,添加如下内容即可:文章来源:https://www.toymoban.com/news/detail-775873.html
export PATH=你的conda环境路径/bin/:你的conda环境路径/lib/:$PATH文章来源地址https://www.toymoban.com/news/detail-775873.html
到了这里,关于Linux系统 利用conda更改gcc、g++版本(非root用户)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!