美文网首页
linux下重新安装特定版本的gcc

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

作者: cana_win | 来源:发表于2017-08-19 16:31 被阅读0次

    背景:

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

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

    可以看到本机安装的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一定要禁用,否则可能出现一些其他问题)

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

    4、编译

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

    make

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

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

    问题(1):

    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

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

    表明已经成功安装。

    问题(2):

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

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

    问题(3):

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

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

    于是按照他说的,删除之前下载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

    至此特定版本的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

          本文链接:https://www.haomeiwen.com/subject/zjptdxtx.html