写在前面:

服务器环境为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!先记录到这!

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐