Ubuntu20.04 在已有多个版本下安装g++\gcc5.5.0版本
写在前面:
服务器环境为ubuntu20.04,cuda10.0+对应的cudnn+英伟达驱动450,g++版本有g++7、g++-9。我需要复刻一个环境,需要tensorflow1.6.0+cuda9.0+cudnn,安装cuda过程说我的g++-7.5.0版本不能编译,百度一波发现cuda9.0支持g++6.0以下的。服务器使用apt下载不了,换源换了几天毫无进展,作罢,只能转向离线安装,第一次是安装g++-4.8.5失败告终。坑踩了不少,对于不熟练linux的菜鸡来说,大部分都得靠百度。次日,强忍难受,安装g++-5.5.0版本,然后写了个简单的c++程序,使用g++-5.5.0这个来编译,成功输出。先不管后面能不能复刻环境,我觉着先把这个记录下来,也不枉一番折腾。
主要得益于这篇博客:(亲自操刀)Ubuntu18.04 的GCC7.3.0 降级为GCC5.5.0,跟着做,别漏了步骤,我的下载了这么几个包如下:
然后上传到服务器上去了。跟着那篇博客走就行。我跟它不同的是在最后那步骤:
原文用红色字体标注,我的操作用蓝色标注,#绿色为注解
配置环境变量
此时系统中存在两个版本的gcc,一个是/usr/bin/gcc , 另一个是/usr/local/gcc-5.5.0/ 如不修改环境变量,在每次调用5.5.0版本的gcc时都需要指定路径。为了方便使用,可以在/usr/bin目录下做一个符号链接
sudo ln -s /usr/local/gcc-5.5.0/bin/gcc /usr/local/bin/gcc550
sudo ln -s /usr/local/gcc-5.5.0/bin/gcc /usr/bin/gcc-5 #因为服务器上已经配置的其他版本g++在这个路径下,所以我的g++-5也放这,管理起来方便些。这个操作做的是软连接,相当于/usr/bin/gcc-5是/usr/local/gcc-5.5.0/bin/gcc的快捷键,查看我的目录下存在哪些g++版本如下:
sudo ln -s /usr/local/gcc-5.5.0/bin/g++ /usr/local/bin/g++550
sudo ln -s /usr/local/gcc-5.5.0/bin/g++ /usr/bin/g++-5 #g++也是类似的
这样就可以使用gcc550,g++550来调用程序了,原版本的gcc,g++仍然可以用。
对于库路径同样需要设置下,这样,保证在调用库函数的时候可以适用到新版编译器的库函数,在etc/profile文件中适用root权限添加如下代码export LD_LIBRARY_PATH=/usr/local/gcc-5.5.0/lib:/usr/local/gcc-5.5.0/lib64:$LD_LIBRARY_PATH
注销重新登录,使变量生效
经过上面的软连接后,结果如下:
红框为快捷键图标,指向绿色框的原地址
因为服务器存在多个g++版本,所以需要让系统知道我有多个版本,并提供切换功能,所以进行下面操作,参考自Ubuntu 18.04下gcc、g++不同版本的安装与转换:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 90
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 90
上面第一行表示给gcc设定优先值90,第二行给g++,设定完服务器中多添加了一个g++-5的版本了,可以执行以下命令来选择g++版本:
sudo update-alternatives --config gcc
可以看到版本切换到g++-5.5.0了,写了个test.cpp测试下:
ok!先记录到这!
更多推荐
所有评论(0)