linux下重新安装特定版本的gcc

背景:

       最近在捣鼓IOS覆盖率的时候,由于需要在Linux下实现将.gcno文件和.gcda文件合并生成覆盖率文件,但是直接使用lcov生成的时候,报错了,错误如下:

linux下重新安装特定版本的gcc_第1张图片

经查询是xcode编译的时候,使用的是gcov4.2.1的,但是Linux服务器上的gcc、gcov是4.4版本的,由于版本不匹配造成的报错,于是需要将Linux服务器上的gcc版本降低到4.2.1(备注:gcov是随gcc一起安装的)。

linux下重新安装特定版本的gcc_第2张图片

可以看到本机安装的gcc和gcov是4.4.7版本的。

安装过程:

1、下载GCC

从镜像下载对应版本的gcc压缩包  http://mirror.hust.edu.cn/gnu/gcc/,下载完成后,解压:

tar -zxvf gcc-4.2.1.tar.gz

2、新建一个编译后输出的目录

通常建议新建一个目录用于存放编译后输出的文件,本人一开始是直接在源码下直接编译的,出了一些问题,因此强烈建议重新建一个目录。

mkdir gcc-build-4.2.1

3、生成makefile文件

在源码解压后的目录中,有个configure可执行文件。进入输出目录,并执行命令,生成Makefile文件。

cd  gcc-build-4.2.1

../gcc-4.2.1/configure  --prefix=/usr/bin/gcc-4.2.1 --enable-language=c,c++,java,objc  --disable-multilib

(其中/usr/bin/gcc-4.2.1是GCC要安装的目录,--enable-language=c,c++,java,objc是设置安装可编译的语言,multilib一定要禁用,否则可能出现一些其他问题)

linux下重新安装特定版本的gcc_第3张图片

执行以上命令后,可以看到在gcc-build-4.2.1目录下会有个Makefile文件。

4、编译

在该目录(gcc-build-4.2.1)下执行编译。

make

该过程会比较慢,耐心等待~~。也可能会遇到一些问题,大部分都是因此缺少依赖库造成的,每个人可能遇到的都不同,遇到问题直接百度就行。

由于自己一开始是在源码下直接编译的,因此过程中遇到了一些问题,以下是本人在源码下直接make的时候遇到的问题,在此记录下来,仅供参考。(因此强烈建议自己新建一个编译后的文件,以免发生一些不必要的问题)。

问题(1):

linux下重新安装特定版本的gcc_第4张图片

java/parse-scan.c:没有那个文件或目录。

原因:缺少bison,因此需要安装bison。附bison下载地址:http://ftp.gnu.org/gnu/bison/

过程如下:

tar -xvf bison-3.0.tar.gz

cd bison-3.0

./configure

make && make install

安装完后,检查下是否安装成功。

linux下重新安装特定版本的gcc_第5张图片

表明已经成功安装。

问题(2):

解决完上述问题之后,继续进行make ,但是又遇到了如下问题。

查了半天没有啥叫进展,看到有文章说最好不要在源码下直接编译,于是新建一个gcc-build文件在这里进行编译。

问题(3):

进入上述新建的目录进行make,依然遇到了问题。如下:

linux下重新安装特定版本的gcc_第6张图片

经查询该问题是由于,一开始在源码下编译,然后又换到其他目录进行编译造成的。

linux下重新安装特定版本的gcc_第7张图片

于是按照他说的,删除之前下载gcc压缩包解压后的文件,重新解压,并且删除了/usr/bin/gcc-4.2.1文件,并进入gcc-build-4.2.1中重新从头进行安装编译。

然后从头进行重新make,然后就再也没有遇到其他问题了,不过这个编译的过程持续了大概1个小时左右,比较漫长,耐心等待。

5、安装

make install

依然顺利,没出问题。

6、建立新版本的链接

由于系统中原来安装的是gcc 4.4.7版本,因此安装了4.2.1之后,需要删除原来的链接,重新建立新链接,操作如下:

rm   /usr/bin/gcc

ln  -s  /usr/bin/gcc-4.2.1/bin/gcc   /usr/bin/gcc

7、检查新版本

gcc -v

linux下重新安装特定版本的gcc_第8张图片

至此特定版本的gcc已经安装成功了。

但是此时gcov版本依然还是4.4.7版本的,同样的操作即可:

(1)删除原有的/usr/bin/gcov

(2)将/usr/bin/gcc-4.2.1/bin/gcov  复制到/usr/bin/下即可。

查看gcov版本:变成了期望的4.2.1。

后续:

由于我安装gcc和gcov是为了解决IOS代码覆盖率生成问题,因此,安装完之后重新尝试生成覆盖率文件。这次终于不报404,402R那个错误了。

你可能感兴趣的:(linux下重新安装特定版本的gcc)