linux 重新编译低版本gcc
编程实践中,可能会遇到需要较低版本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
linux 重新编译低版本gcc的更多相关文章
- 低版本GCC程序向高版本移植的兼容性问题
将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个 ...
- Xcode 5.0 编译低版本app
Xcode 5.0 默认的编译环境是iOS7,编译出来的app,安装到iOS7.0版本以上的手机上,会表现出iOS7.0的风格.兼容不太好的应用,布局上可能会因此乱八七糟. 如果还不想让app升级到i ...
- 解决:高版本jdk编译低版本代码时eclipse提示Access restriction:The type 'Unsafe' is not accessible due to restriction on required library
在Eclipse中采用高版本jdk编译一些低版本的源码时,由于源码中使用了一些高版本中过时的API,可能就会报错,类似于: Access restriction:The type 'Unsafe' i ...
- Fedora12下yum安装低版本gcc
1.Fedora12下gcc位置及其版本如下: 2.根据需要,要安装低版本的gcc,直接用"yum install gcc"安装时默认是安装最新版本的gcc,如下: 3.可先通过& ...
- 【LINUX】降级安装低版本GCC,G++
由于要制作crosstool,需要用到gcc 4.1.2来编译,而Ubuntu 12.04下的gcc版本是gcc 4.6.3,高版本的gcc也不是好事啊. 下面介绍gcc 4.1.2的编译安装方法: ...
- Linux系统编译Win32版本adb
源码版本:android 7.0 步骤1:source build/envsetup.sh 步骤2:lunch 步骤3:选择编译设备目标 步骤4:make adb USE_MINGW=y 下面是应对编 ...
- Linux/RedHat 编译安装GNU gcc 4.9.0 (g++)
这里说的是编译安装,yum/apt-get 等安装方法比較简单,不阐述! 1.下载源代码包:gcc.gnu.org 2.解压: tar -xjvf gcc-4.9.0.tar.bz2 3.下载编译所需 ...
- 在新版linux上编译老版本的kernel出现kernel/timeconst.h] Error 255
在使用ubuntu16.4编译Linux-2.6.31内核时出现这样的错误 可以修改timeconst.pl的内容后正常编译. 以下是编译错误提示的内容: Can't use 'defined(@ar ...
- Eclipse使用高版本的jdk编译低版本的class文件的方法
如题,在这两天使用eclipse工具编译代码时,编译出来的class文件拿UE工具查看,版本为1.8版本的,而本地使用的tomcat版本是1.6的,运行中报错Unsupported major.min ...
随机推荐
- http 错误 500.21
出现这个错误一般都是.net Framework 在iis中安装错误 这个时候需要重新安装iis .netframework 4.0框架 我的解决方案如下: 在cmd中以管理员身份运行->%wi ...
- 初学c# -- 学习笔记(一)
初学c# -- 学习笔记(一) 学习C#了,参考许多资料,一步步学习.这一段学习ajax的工作原理,参照其他例子写了web版的群聊小程序,全部文件代码也就不到300行,很简单.使用时先输入用户名,点确 ...
- JS获取指定的cookie值
cookie Name为TEST_COOKIE:用如下方法可以获取cookie值: document.cookie.replace(/(?:(?:^|.*;\s*)TEST_COOKIE\s*\=\s ...
- LDAP与Samba
默认的Samba服务器支持本地系统用户(smbpasswd添加后)访问Samba资源,不支持OpenLDAP服务器账号访问Samba共享资源 目的:配置完后,OpenLDAP每新增一个用户,就自动支持 ...
- 第十二章 redis-cluster搭建(redis-3.2.5)
redis集群技术 redis2.x使用客户端分片技术 redis3.x使用cluster集群技术 一.环境 os:centos7 ip:10.211.55.4 redis:3.2.5 gem-red ...
- 【循序渐进MVC】第一回——一物多用Project.json依赖关系之dependencies节点
Project.json统一了ASP.NET vNext之前版本的packages.config.NuGet 配置(nuspec)以及项目文件(csprojs):并集成在Project.json中. ...
- sap MD04中常用函数
1. 需求溯源 : MD_PEGGING_NODIALOG 2. 实时库存 : MD_STOCK_REQUIREMENTS_LIST_API 这个函数中MDPSX 和 MDEZX 是通过 MDPS 的 ...
- Android开发学习---android下的数据持久化,保存数据到rom文件,android_data目录下文件访问的权限控制
一.需求 做一个类似QQ登录似的app,将数据写到ROM文件里,并对数据进行回显. 二.截图 登录界面: 文件浏览器,查看文件的保存路径:/data/data/com.amos.datasave/fi ...
- php版本引起的const问题
刚刚遇到一个问题,类中定义了一个常量: const USER = ['aa', 'bb', 'cc']; 在类中的静态函数中调用以上常量不会出错.网站中所有的网页均能正常打开. 而当push到线上后, ...
- C#时间操作
C#时间戳与日期互转 /// <summary> /// 时间戳转为C#格式时间 /// </summary> /// <param name="timeSta ...