安装低版本gcc原因
ubuntun自动安装的GCC版本为7.3.0,高版本的GCC在编译binutils时会自动检测警告并报错,低版本的会自动过滤警告,虽然可以通过增加CFLAGS参数忽略警告,但是警告太多,过于繁琐,因此选择安装低版本的GCC。
低版本的gcc有两种方式安装:
1.linux上可以gcc多版本共存,可以通过修改软链接的方式选择自己要用的gcc版本,该方法简单方便,可以随时依据自己的需求将gcc降级或升级,解决不同的软件要求不同的环境的问题。
2.上官网下载源码进行安装,需要手动编译等,容易出错,由于时间关系进行到一半换成上述安装方式(有时间手动操作一遍)。
一、利用软链接的方式进行gcc的降级和升级
(1)gcc的降级
- apt-get安装gcc、g++,默认下载最新版本的,此时ubuntu里的gcc和g++版本均为7.3.0。
1. sudo apt-get install gcc
2. sudo apt-get install g++
3. gcc -v //查看的版本为7.3.0
4. g++ -v //查看的版本为7.3.0
- apt-get 安装gcc、g++ 5版本,利用apt-get 安装gcc5.4.0版本时显示没有该版本资源,因此改为gcc.5版本。
1. sudo apt-get install -y gcc-5
2. sudo apt-get install -y g++-5
gcc-5版本已经下载好,通过下载时输出的信息来看下载的版本实际为gcc 5.5.0-12ubuntu1
- 删除原有gcc链接,重新建立软链接。
1. cd /usr/bin
2. sudo rm -r gcc //移除之前的软链接
3. sudo ln -sf gcc-5 gcc // 建立gcc-5的软链接 此处尝试使用gcc-5.5.0,但是报错
4. sudo rm -r g++ //同上
5. sudo ln -sf g++-5 g++ //同上
- 此时,gcc的版本已经成功的从7.3.0下降到5.5.0版本,利用
gcc -v
查看版本号发现已经更新为gcc 5.5.0。
上处软链接时使用的时gcc-5,显示的版本为gcc 5.5.0,考虑原因应该时在使用apt-get下载时使用的是gcc-5的原因。
(2)gcc的升级
由于还没有试验,暂时空着,随后试验后补上
二、ubuntu手动安装低版本gcc 5.4.0
参考文章1
参考文章2:比较详细的讲述了原因和步骤
我在安装低版本的gcc前把gcc以及g++都卸载了,但是编译过程中出错,原因是编译gcc源码又需要编译环境,即编译gcc还是需要编译环境的,可以用gcc编译环境也可以选择其他编译环境,因此又把gcc 7.3.0下载回来了。
卸载安装的gcc方法:
卸载gcc:sudo apt-get remove gcc
- 上gcc官网下载压缩包,选择Asia—china镜像,选择安装的gcc版本5.4.0,下载安装包gcc-5.4.0.tar.gz
- 将安装包gcc-5.4.0.tar.gz移动到文件夹/usr/local/share/
- 解压缩安装包:
sudo tar -zxvf gcc-5.4.0.tar.gz
,解压缩完成后会在当前文件夹出现一个文件夹gcc-5.4.0 - 进入文件夹gcc-5.4.0,安装编译gcc需要的依赖项,即各种依赖包,可以通过命令集成一次性安装所有依赖包(需要Linux联网)
如果linux无法上网可以手动下载依赖包并安装,尽量使用gcc该版本中要求的配套版本的包
配套文件为:gcc-5.4.0/contrib/download_prerequisites
1. cd gcc-5.4.0
2. ./contrib/download_prerequisites
3. cd ..
- 创建gcc-build-5.4.0,目的存放编译结果,GCC建议编译后的文件不要放在源目录中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是源目录的子目录。
mkdir /usr/local/share/gcc-build-5.4.0
- 进行配置configure,configure的目标是在文件夹下生成makefile文件,配置的目的是决定将GCC编译器安装到什么地方,支持什么语言以及指定其它一些选项等。
1. cd gcc-build-5.4.0
2. ../gcc-5.4.0/configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
在配置时由于之前把gcc环境删除了,因此会报错:
configure: error: no acceptable C compiler found in $PATH
上网查了以后,发现是没有编译环境,重新下载gcc环境,重新配置,通过
- 编译,该过程中仍然有报错行为,具体为什么尚不可知,进行到此换另一种方法,报错原因并没有解决。
make
- 安装
make install