博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 重新编译低版本gcc
阅读量:4968 次
发布时间:2019-06-12

本文共 2137 字,大约阅读时间需要 7 分钟。

编程实践中,可能会遇到需要较低版本gcc以兼容相应程序的需求,这时就需要我们将系统中默认的gcc版本较低,或者重新编译生成。(UBUNTU12.04下实现gcc4.2.3)

方法1: 对于UBUNTU12.04现在支持的最低版本是gcc4.4.*, 如果程序需要的编译器  >= 4.4.* 就可以比较优雅的解决了。
           相应的命令:        
                     sudo apt-get install gcc-4.4 g++-4.4 g++-4.4-multilib
                     sudo update-alternatives --install   /usr/bin/gcc    gcc    /usr/bin/gcc-4.4   100
           此处通过将gcc 4.4的优先级提高,来使得gcc4.4为默认版本
           查看版本号: gcc --version来确定;
           同时,也可以通过更换/usr/bin下的符号链接来实现版本的切换。

方法2 : 对于某些程序,可能需要更低版本的gcc(如matlab要求gcc4.3.*以下),此时就需要从gcc.gnu.org下载以前的版本来重新编译。
           1. 下载 -- 解压 -- 新建build文件夹
           2. 配置生成make文件
                       $(dst_path)/configure --prefix=src_path --host=x86_64-linux-gnu --enable-language=c,c++ --disable-multilib
                       multilib一定要禁用,否则 错误可能各种莫名其妙啊。。。
                对于gcc-4.1.1 需要texinfo的版本比较高,可以更改configure文件,以兼容系统中的低版本:                    
                      在configure文件里找到以下语句:
                                  # For an installed makeinfo, we require it to be from texinfo 4.2 or
                                  # higher, else we use the "missing" dummy.
                                  if ${MAKEINFO} --version \| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then:
                       其中4\.[2-9]|[5-9]表示的是支持4.2-4.9之间的几个版本,所以需要自己添加4\.[1-9][0-9]*,以支持4.11版本。即把'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])'编辑成'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|4\.[1-9][0-9]*|[5-9])'后保存。(当然,还是后边还是出现了另外一些错误,没有解决)
          3. make生成
          4. 安装 make install
          5. 建立符号链接: sudo ln -s $(src_path)/bin/gcc /usr/bin/gcc
          因为依赖问题造成的错误:(参考confi.log输出, 可能会有一些有益的信息)
           configure:2341:17: error: gmp.h: No such file or directory    解决之道:  sudo apt-get install libgmp3-dev (当然mpfr也需要顺便安装)
           此处需要参照 http://gcc.gnu.org/wiki/FAQ#configure(Why does my ./configure and make fail?)
           Build fails with ''fatal error: gnu/stubs-32.h: No such file or directory''.  解决之道: 安装libc6-dev, libc6-dev-i386,同时--disable-multilib  
           ''configure: error: cannot compute suffix of object files: cannot compile''.    缺少相应的依赖包造成的。
           cannot find crt1.o 缺少相应的符号链接, 将/usr/lib/x86-linux-gnu/crt*.o 链接到 /usr/bin下。通过locate crti.o定位其位置
       xgcc: java/parse-scan.c: No such file or directory 安装bison和bisonc++
            
ref:
http://blog.csdn.net/qxb1229/article/details/8217270
http://gcc.gnu.org/wiki/FAQ#configure
http://gcc.gnu.org/ml/gcc-help/2007-07/msg00087.html
http://stackoverflow.com/questions/6329887/compiling-problems-cannot-find-crt1-o

转载于:https://www.cnblogs.com/S-Jiang/p/linux_gcc_comile.html

你可能感兴趣的文章
服务器一:分布式服务器结构
查看>>
迭代dict的value
查看>>
eclipse package,source folder,folder区别及相互转换
查看>>
Py 可能是最全面的 python 字符串拼接总结(带注释版)
查看>>
(转载)博弈汇总【巴什博奕,威佐夫博弈,尼姆博弈,斐波那契博弈】
查看>>
《Java程序设计实验》 软件工程18-1,3 OO实验2
查看>>
【Herding HDU - 4709 】【数学(利用叉乘计算三角形面积)】
查看>>
【7-9 有重复的数据I (20 分)】【此题卡输入,需要自己写个输入挂】
查看>>
JRebel安装部署,激活
查看>>
OPENSSL使用方法
查看>>
下载GO的开源开发工具LITEIDE
查看>>
接口操作XML
查看>>
idhttp访问DATASNAP有密码验证的中间件
查看>>
libmidas.so.2
查看>>
开发WINDOWS服务程序
查看>>
httpencode编码
查看>>
cross socket和msgpack的数据序列和还原
查看>>
解决跨操作系统平台JSON中文乱码问题
查看>>
DELPHI搭建centos开发环境
查看>>
IdHTTPServer允许跨域访问
查看>>