【LINUX】降级安装低版本GCC,G++
由于要制作crosstool,需要用到gcc 4.1.2来编译,而Ubuntu 12.04下的gcc版本是gcc 4.6.3,高版本的gcc也不是好事啊。
下面介绍gcc 4.1.2的编译安装方法:
1. 下载并解压源码:
wget http://mirrors.ustc.edu.cn/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
tar jxvf gcc-4.1.2.tar.bz2
2. 安装依赖库及软件:
sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
3. 声明编译时的include和lib路径:
Ubuntu由于采用了多系统支持,include和lib路径有些不同,可以这样声明暂时解决编译gcc时找不到头文件和库的问题。
export C_INCLUDE_PATH=/usr/include/i386-linux-gnu
export CPLUS_INCLUDE_PATH=/usr/include/i386-linux-gnu
export LIBRARY_PATH=/usr/lib/i386-linux-gnu
4. 编译gcc:
cd gcc-4.1.2
mkdir build
cd build
../configure --prefix=/opt/gcc-4.1.2 --program-suffix=-4.1 --libexecdir=/opt/gcc-4.1.2/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --enable-languages=c,c++
make bootstrap
然后是漫长的等待。。。
5. 安装gcc:
make install
cd /opt/gcc-4.1.2/bin
ls -al
看到i686-pc-linux-gnu-gcc-4.1.2等文件就说明安装完成啦。
6. 切换gcc 4.1.2:
我一般喜欢在主目录下建立一个bin文件夹,而bin文件夹默认就在PATH中,然后在bin文件夹下链接gcc-4.1来切换gcc的不同版本。
cd ~
mkdir bin
ln -s /opt/gcc-4.1.2/bin/gcc-4.1 gcc
ln -s /opt/gcc-4.1.2/bin/g++-4.1 g++
ln -s /opt/gcc-4.1.2/bin/cpp-4.1 cpp
ln -s /opt/gcc-4.1.2/bin/gcov-4.1 gcov
ln -s gcc cc
ln -s g++ c++
现在重新登录,输入gcc -v 或 cc -v就可以显示gcc已经变成4.1.2版本啦
最近在了解分布式文件系统, 看到了淘宝自己的开源分布式文件系统 tfs, 因为他要求编译最好是使用 4.1.2 版本的 gcc 编译, 因此需要安装此版本的 gcc.
其他少说, 直接开始安装吧:
1. 下载&解压源码
$ wget http://ftp.gnu.org/gnu/gcc/gcc-4.1.2/gcc-4.1.2.tar.bz2
$ tar xvjf gcc-4.1.2.tar.bz2
2. 安装依赖库, 以及软件
$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo
3. 为头文件以及所需库添加链接
添加如下链接, 这取决于你的 Ubuntu 系统架构, 如果你使用的是64位的ubuntu系统应当使用x86_64-linux-gnu替代i386-linux-gnu
$ cd /usr/include
$ sudo ln -s i386-linux-gnu/bits bits
$ sudo ln -s i386-linux-gnu/gnu gnu
$ sudo ln -s i386-linux-gnu/sys sys
$ sudo ln -s i386-linux-gnu/asm asm
$ cd /usr/lib
$ sudo ln -s i386-linux-gnu/crt1.o crt1.o
$ sudo ln -s i386-linux-gnu/crti.o crti.o
$ sudo ln -s i386-linux-gnu/crtn.o crtn.o
4. 编译gcc
$ cd gcc-4.1.2
$ mkdir build
$ cd build
$ ../configure --prefix=/usr/local --program-prefix=sse- --libexecdir=/usr/local/lib --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --disable-multilib --enable-languages=c,c++
$ make bootstrap
如果出现了如下错误:
WARNING: `makeinfo’ is missing on your system. You should only need it
if you modified a `.texi’ or `.texinfo’ file, or any other file
indirectly affecting the aspect of the manual. The spurious
call might also be the consequence of using a buggy `make’ (AIX,
DU, IRIX). You might want to install the `Texinfo’ package or
the `GNU make’ package. Grab either from any GNU archive site.
请使用以下命令编译:
$ make bootstrap MAKEINFO=makeinfo
5. 安装gcc
$ make install
$ cd /usr/local/bin
$ ll *gcc*
看到类似以下几个文件, 安装就完成了
i686-pc-linux-gnu-gcc-4.1.2 i686-pc-linux-gnu-ssegcc ssegcc ssegccbug
【LINUX】降级安装低版本GCC,G++的更多相关文章
- linux 重新编译低版本gcc
编程实践中,可能会遇到需要较低版本gcc以兼容相应程序的需求,这时就需要我们将系统中默认的gcc版本较低,或者重新编译生成.(UBUNTU12.04下实现gcc4.2.3) 方法1: 对于UBUNTU ...
- Fedora12下yum安装低版本gcc
1.Fedora12下gcc位置及其版本如下: 2.根据需要,要安装低版本的gcc,直接用"yum install gcc"安装时默认是安装最新版本的gcc,如下: 3.可先通过& ...
- ubuntu下安装低级版本gcc/g++ 并随意切换
来自:http://blog.sina.com.cn/s/blog_6cee149d010129bl.html 发现Android的版本中编译Host的程序经常因为本机的Gcc版本过高,需要这样那样的 ...
- CentOS7 安装高版本gcc, g++, gfortran等工具
SCL(Software Collections)是一个CentOS/RHEL Linux平台的软件多版本共存解决方案,为用户提供一种方便.安全地安装和使用应用程序和运行时环境的多个版本的方式. De ...
- 【NS2】在linux下安装低版本GGC
1.下载安装包,cd到文件所在目录 sudo dpkg -i gcc41-compat-4.1.2-ubuntu1210_i386.deb g++41-compat-4.1.2_i386.deb 2. ...
- 如何把SQLServer数据库从高版本降级到低版本
如何把SQLServer数据库从高版本降级到低版本 编写人:CC阿爸 2015-4-7 近期在给一个客户推行ECM系统时,基本客户的硬件环境,我们为其安装的为SQL2008 64位的数据库系统.在安装 ...
- 低版本GCC程序向高版本移植的兼容性问题
将低版本gcc编译过的程序移植到高版本GCC时, 可能会出现一些兼容性问题. 原因是, 为了适应新的标准,一些旧的语法规则被废弃了. 关于这方面的一些具体资料可从该处查询. 这里只是自己遇到的其中一个 ...
- CentOS下安装高版本GCC
CentOS下安装高版本GCC 微信分享: 有时编译需要用到4.8以上版本的GCC,由于CentOS源没有提供高版本的GCC安装包,这时就不能通过安装包安装.通常的解决方案就是通过编译安装高版本的 ...
- CentOS7安装高版本gcc
CentOS7安装高版本gcc 下载 从hust镜像站下载gcc源码包. http://mirror.hust.edu.cn/gnu/gcc/ 我选择的是gcc-8.3.0.tar.gz. cd mk ...
随机推荐
- 新的开始 | Arthas GitHub Star 破万后的回顾和展望
一切新的开始,都始于一个里程碑. 2月20日上午,Java 开源诊断工具 Arthas 的 GitHub Star 突破10000,距离开源后的第一个Release 版发布仅 147 天. 从中,我们 ...
- Django项目:CRM(客户关系管理系统)--48--39PerfectCRM实现登录+验证码+过期时间+页面保留账号
# gbacc_urls.py # ————————38PerfectCRM实现全局账号登录注销———————— from django.conf.urls import url from gbacc ...
- 通过游戏学python 3.6 第一季 第六章 实例项目 猜数字游戏--核心代码--猜测次数--随机函数和屏蔽错误代码--优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 可复制直接使用 娱乐 可封装 函数
#猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优化代码及注释--简单账号密码登陆--账号的注册查询和密码的找回修改 #猜数字--核心代码--猜测次数--随机函数和屏蔽错误代码---优 ...
- $\mathcal{Miemeng}$的病态码风计划
晚上困的要命,先写个码风计划提提神. 计划目标 抵制无理压行. 抵制不可读代码. 倡导代码艺术化,分层化 具体的一些细节和展示 1>整体 首先要把预读部分(我这么叫的),命名域使用,全局变量定义 ...
- HDU2699 扩展欧几里德
//赤裸裸,不解释 #include<stdio.h> typedef long long LL; //hdu需用int64 void gcd(int a, ...
- VMWare 下 Ubuntu 18.04 的文件共享
突然某天发现 /mnt/hgfs 下共享的文件夹没了... apt-get install open-vm-tools mkdir /mnt/hgfs vmhgfs-fuse .host:/ /mnt ...
- Spring AOP(转)
原文:Spring实现AOP的4种方式 Spring AOP 详解 Spring实现AOP的4种方式 先了解AOP的相关术语:1.通知(Advice):通知定义了切面是什么以及何时使用.描述了切面要完 ...
- java opencv 4.0.1安装配置
如果没有把dll扔到jdk会报错 Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: no ...
- mysql创建数据库指定utf8编码
CREATE DATABASE IF NOT EXISTS dbname DEFAULT CHARSET utf8;
- axios简单的二次封装
import axios from 'axios' import { Message} from 'element-ui' import store from '../store' //vuex im ...