centos7源码安装gcc5.4

软件下载

在清华镜像站:https://mirrors.tuna.tsinghua.edu.cn/下载

gcc-5.4.0.tar.gz,解压tar -xzvf gcc-5.4.0.tar.gz

gmp-6.1.2.tar.bz2,解压tar -xjvf gmp-6.1.2.tar.bz2

mpc-1.1.0.tar.gz,解压tar -xzvf mpc-1.1.0.tar.gz

mpfr-4.0.2.tar.gz,解压tar -xzvf mpfr-4.0.2.tar.gz

环境预装

yum install gcc automake autoconf libtool make gcc-c++
#安装gmp
cd gmp-6.1.2
./configure --prefix=/usr/local/gmp
make && make install
#安装mpfr
cd mpfr-4.0.2
./configure --prefix=/usr/local/mpfr --with-gmp=/usr/local/gmp
make && make install
#安装mpc
cd mpc-1.1.0
./configure --prefix=/usr/local/mpc --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr
make && make install

安装gcc

cd gcc-5.4.0
./configure --prefix=/usr/local/gcc5.4 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp --with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gmp/lib/:/usr/local/mpfr/lib/:/usr/local/mpc/lib/
make && make install

使用gcc

ln -sf /usr/local/gcc5.4/bin/c++ /usr/bin/c++
ln -sf /usr/local/gcc5.4/bin/g++ /usr/bin/g++
ln -sf /usr/local/gcc5.4/bin/gcc /usr/bin/gcc
export LD_LIBRARY_PATH=/usr/local/gcc5.4/lib64:/usr/local/gmp/lib/:/usr/local/mpfr/lib/:/usr/local/mpc/lib/:$LD_LIBRARY_PATH

或者是使用系统命令update-alternatives管理,update-alternatives是系统中专门维护命令链接符的工具。

#其中40,50,70是优先级,越高越有限,--slave能保证gcc和g++保持相同的版本
#第一个/usr/bin/gcc表示软链接,第二个gcc表示简称,第三个/usr/bin/gcc-4.8表示真实路径
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 --slave /usr/bin/g++ g++ /usr/bin/g++-5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 70 --slave /usr/bin/g++ g++ /usr/bin/g++-7

update-alternatives --config gcc#查看已经配置好的gcc链接,输入编号选择不同的gcc版本
update-alternatives --remove gcc /usr/bin/gcc-4.8 #删除gcc链接

arm上编译出现的问题

编译时报错:

./md-unwind-support.h:55:21: error: field ‘uc’ has incomplete type
     struct ucontext uc;

这个是因为ucontext在定义时是这样的

struct ucontext
{
  ...
} ucontext_t;

所以改动方式就是将55行:struct ucontext uc; 改成struct ucontext_t uc;

编译时报错:

./libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc:146:23: fatal error: sys/ustat.h: No such file or directory

参考链接:解决方法

编译时报错:

/libsanitizer/asan/asan_linux.cc:222:20: error: ‘SIGSEGV’ was not declared in this scope

给文件asan_linux.cc添加头文件 #include <signal.h>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值