ubuntu16.04安装gcc4.8.4版本

 

因为特殊需要,需要在ubuntu16.04下安装gcc4.8.4版本。网上帖子不多,我自己写一篇。

一、安装环境:ubuntu16.04 + ros-kinetic。除此之外没有别的了,什么cuda、显卡驱动啥的,都没有。

源码编译gcc4.8.4需要三个依赖,其需要按顺序安装。gmp、mpfr、mpc。

首先按照这2个帖子下载三个依赖包。

https://blog.csdn.net/Cathy0322/article/details/48546197

https://blog.csdn.net/tianyuzhixina/article/details/73222628

1、下载 gmp:  ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.1.0.tar.bz2

2、下载mpfr:  http://www.mpfr.org/mpfr-current/mpfr-3.1.5.tar.gz

我下载的是mpfr4.0.2版本,上面这个件连接打不开的话,可以打开上一步目录,即http://www.mpfr.org/mpfr-current

3、下载mpc:  ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.0.3.tar.gz

然后开始顺序安装 gmp、 mpfr、mpc

1、右键,解压 gmp-6.1.0后

进入文件夹

cd gmp-6.1.0

gmp的安装,均在同一个终端下输入命令。

创建安装位置

mkdir /usr/local/gmp-6.1.0

我这里使用的是sudo权限。

sudo mkdir /usr/local/gmp-6.1.0

然后开始编译

./configure --prefix=/usr/local/gmp-6.1.0
make
make install

最后一步 make install的时候提示我没有权限,我就加了sudo 

sudo make install

gmp安装过程中会提示没有 m4.此时可在线安装 m4或者离线安装 m4.

在线:https://blog.csdn.net/qill_sk/article/details/53193133

sudo apt-get install m4

离线:https://blog.csdn.net/wolf2345/article/details/79074776

 进入此链接,下载。http://mirrors.kernel.org/gnu/m4/m4-1.4.13.tar.gz 

链接打不开的话,可以尝试上一级链接,即   http://mirrors.kernel.org/gnu/m4

解压进入m4文件夹。编译安装即可。

cd m4-1.4.13
./configure –prefix=/usr/local
make
sudo make install

2、安装mpfr

顺序差不多,首先右键,解压,然后进入mpfr4.0.2文件夹

cd mpfr-4.0.2

gmp的安装,均在同一个终端下输入命令。

创建 安装位置,这里我同样 加了sudo,因为提示我没有权限

sudo mkdir /usr/local/mpfr-4.0.2

开始编译,注意要 对应上 gmp的路径

./configure --prefix=/usr/local/mpfr-4.0.2 --with-gmp=/usr/local/gmp-6.1.0
make
sudo make install

3、安装mpc

同样的,右键,解压,进入文件夹

cd mpc-1.0.3

创建安装位置,我这里使用了 sudo

sudo mkdir /usr/local/mpc-1.0.3

开始编译,注意gmp和mpfr的位置

./configure --prefix=/usr/local/mpc-1.0.3 --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-4.0.2
make
sudo make install

安装mpc时会提示   mpfr_fmma 错误。可根据如下链接进行修改 。https://blog.csdn.net/zhuyunfei/article/details/81290764

将mul.c内的所有mpfr_fmma函数改名为mpfr_fmma_mul,本人改动了三处地方。

安装完成。

 

二、安装gcc4.8.4

首先下载gcc4.8.4的压缩包。网上有些链接下载的包我打不开,后来在朋友那里弄了一个过来,可以打开,有需要的可以下载。

解压,进入gcc4.8.4文件夹

cd gcc-4.8.4

建立安装位置

sudo mkdir /usr/local/gcc

添加路径

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp-6.1.0/lib/:/usr/local/mpfr-4.0.2/lib/:/usr/local/mpc-1.0.3/lib/

安装

./configure --prefix=/usr/local/gcc-4.8.4 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-4.0.2 --with-mpc=/usr/local/mpc-1.0.3
make
sudo make install

遇到的问题:

1、在配置gcc时出现要求mpfr gmp mpc版本要求的错误时,在gcc目录下的config.log日志内如果有mpfr_add_one_ulp和mpfr_sub_one_ulp不存在的错误,需要修改安装包mpfr4.0.2下的mpfr.h,新增如下内容:

#define mpfr_add_one_ulp(x,r) \
 (mpfr_sgn (x) > 0 ? mpfr_nextabove (x) : mpfr_nextbelow (x))
#define mpfr_sub_one_ulp(x,r) \
 (mpfr_sgn (x) > 0 ? mpfr_nextbelow (x) : mpfr_nextabove (x))

放在   #define MPFR_VERSION_STRING "4.0.2"后面。然后重新安装mpfr和mpc。

2、遇到如下问题

/home/mj/gcc-4.6.4/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /usr/lib/x86_64-linux-gnu/libicuuc.so.55)
Makefile:451: recipe for target 'de.mo' failed
make[4]: *** [de.mo] Error 1
make[4]: Leaving directory '/usr/bin/gcc-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3/po'
Makefile:469: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/usr/lib/gcc-4.8.5/x86_64-unknown-linux-gnu/libstdc++-v3'
Makefile:377: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/mj/gcc-4.6.4/x86_64-unknown-linux-gnu/libstdc++-v3'
Makefile:14812: recipe for target 'all-target-libstdc++-v3' failed
make[1]: *** [all-target-libstdc++-v3] Error 2
make[1]: Leaving directory '/home/mj/gcc-4.6.4'
Makefile:892: recipe for target 'all' failed
make: *** [all] Error 2

则参考这篇帖子  https://blog.csdn.net/u010741000/article/details/86513205

先查看安装包里是否有这些文件

strings 安装包文件夹/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6 | grep CXXABI
 
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3
CXXABI_1.3.2
CXXABI_1.3.1
CXXABI_1.3.5
CXXABI_1.3.4
CXXABI_1.3.3

再看系统

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep CXXABI
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_TM_1
CXXABI_FLOAT128

解决办法,建立软连接

sudo ln -sf /usr/lib/x86_64-linux-gnu/libstdc++.so.6 安装包文件夹/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6

注意:建立完软连接后,需要执行 以下语句使得软连接生效

sudo ldconfig -v

然后更改gc-c4.8.4安装包的权限,进入gcc-4.8.4后,

cd gcc-4.8.4
chmod 777 *

然后再执行 make

sudo make install

即可。

安装完成后,需要把系统之前的gcc软连接进行更换,更换到4.8.4的软连接。

首先进入到   /usr/bin文件夹下,删除之前的gcc、g++软连接

sudo rm -r gcc
sudo rm -r g++

再重启一个新终端,直接输入以下指令,创建新的软连接

ln -s /usr/local/gcc-4.8.4/bin/gcc /usr/bin/gcc
ln -s /usr/local/gcc-4.8.4/bin/g++ /usr/bin/g++

完成。

若要恢复之前的gcc软连接,则进入 /usr/bin文件夹下,删除软连接,重新建立新的软连接。(我电脑的原本gcc版本是5.6.0)

sudo rm -r gcc
sudo rm -r g++

 由于系统自带的gcc5默认就在 /usr/bin文件夹下,因此直接输入以下指令就可。

sudo ln -sf gcc-5 gcc
sudo ln -sf g++-5 g++

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值