Manjaro中源码安装gcc7.1
刚刚gcc 7.1也出来了,想在使用熟悉的linux下试试,特记录如下:
准备必要的系统环境:(升级系统到最新,安装必要的工具)
pacman -Syyu #升级系统到最新
pacman -Q gcc gawk m4 binutils lzip #查看必备工具是否具备,没有就安装,我的缺少了lzip,安装后,结果
gcc 6.3.1-2
gawk 4.1.4-2
m4 1.4.18-1
binutils 2.28.0-2
lzip 1.19-1
mkdir gcc_builder_7.1 && cd gcc_builder_7.1
# 下载三个必须的库gmp、mpfr、mpc;根据依赖关系:mpfr依赖于gmp, mpc依赖于gmp和mpfr。 下载顺序无关紧要,安装的顺序必须是先安装gmp,再安装mpfr,然后安装mpc,最后安装gcc,由于文件是相互依赖的,千万不要弄错顺序。
#获取必要的文件
# gmp
wget https://gmplib.org/download/gmp/gmp-6.1.2.tar.lz
# mpfr
wget http://www.mpfr.org/mpfr-current/mpfr-3.1.5.tar.xz
# mpc
wget ftp://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
# gcc-7.1
wget http://mirrors.webhostinggeeks.com/gcc/releases/gcc-7.1/gcc-7.1.tar.bz2
#新建源码解压保存目录,使用对应的工具解压到对应的目录,最好不要有版本号:
# 解压 gmp
lzip -d gmp-6.1.2.tar.lz
tar -xvf gmp-6.1.2.tar && mv gmp-6.1.2 gmp
# 解压mpfr
tar -Jxvf mpfr-3.1.5.tar.xz && mv mpfr-3.1.5 mpfr
# 解压mpc
tar -zxvf mpc-1.0.3.tar.gz && mv mpc-1.0.3 mpc
# 解压GCC
tar -jxvf gcc-7.1.tar.bz2 && mv gcc-7.1 gcc
# 编译gmp库,安装到/usr/gcc_7_1目录,以x86_64-linux-gnu内核
cd gmp #进入gmp源码目录
mkdir build && cd build #准备编译目录
../configure --prefix=/usr/gcc_7_1 --build=x86_64-linux-gnu #配置编译选项
make -j4 #编译
sudo make install #编译安装
# 编译mpfr库,安装到/usr/gcc_7_1目录,以x86_64-linux-gnu内核,以gmp库
cd ../../mpfr #进入mpfr源码目录
mkdir build && cd build #准备编译目录
../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1 #配置编译选项
make -j4 #编译
sudo make install #编译安装
# 编译mpc库,依赖gmp、mpfr,内核...
cd ../../mpc #进入mpc源码目录
mkdir build && cd build #准备编译目录
../configure
--build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1
--with-mpfr=/usr/gcc_7_1 #配置编译选项
make -j4 #编译
sudo make install #编译安装
#编译GCC源码
cd ../../ #进入gcc源码目录
mkdir build && cd build #准备编译目录
export LIBRARY_PATH=/usr/lib/x86_64-linux-gnu/
export C_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
export CPLUS_INCLUDE_PATH=/usr/include/x86_64-linux-gnu
#下一行是配置编译环境
../gcc/configure
--build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1
--with-mpfr=/usr/gcc_7_1 --with-mpc=/usr/gcc_7_1
--enable-checking=release --enable-languages=c,c++,fortran
--disable-multilib --program-suffix=-7.1
make -j4 #编译
#make -jN,可以调整n的数值,例如:make -j4,如果编译出错,执行make clean后直接make,只是编译过程会比较慢。
sudo ln -s /usr/lib/x86_64-linux-gnu/ /usr/lib64 #链接库文件
sudo make install #编译安装
export
PATH=/usr/gcc_7_1/bin:$PATH
#将gcc 7.1添加到系统路径,或者直接编辑home目录下.bashrc文件,在最后添加 export
PATH=/usr/gcc_7_1/bin:$PATH
# 调用编译器测试
gcc-7.1 -v #结果如下:
使用内建 specs。
COLLECT_GCC=gcc-7.1
COLLECT_LTO_WRAPPER=/usr/gcc_7_1/libexec/gcc/x86_64-linux-gnu/7.1.0/lto-wrapper
目标:x86_64-linux-gnu
配置为:../gcc/configure
--build=x86_64-linux-gnu --prefix=/usr/gcc_7_1 --with-gmp=/usr/gcc_7_1
--with-mpfr=/usr/gcc_7_1 --with-mpc=/usr/gcc_7_1
--enable-checking=release --enable-languages=c,c++,fortran
--disable-multilib --program-suffix=-7.1
线程模型:posix
gcc 版本 7.1.0 (GCC)
#就表明安装成功
Manjaro中源码安装gcc7.1的更多相关文章
- Linux中源码安装编译Vim
Linux中源码安装编译Vim Linux下学习工作少不了编辑器,Vim能使你的工作效率成倍的提高.在Ubuntu上安装vim使用命令直接安装很简单.但有时还是需要自己手动编译安装.例如: vim中的 ...
- centos7 中源码安装nginx
使用nginx有一段时间了,还是有很多东西不懂的,在这里做一下自己学习过程中的一些整理,能使自己得到提升. 1.环境:centos7 1511 最小化安装 2.下载nginx,可以在系统中下载,也可 ...
- Centos7中源码安装Nodejs
Step 1.确认服务器有nodejs编译及依赖相关软件,如果没有可通过运行以下命令安装. [root@BobServerStation local]# yum -y install gcc gcc- ...
- Windows 环境下于虚拟环境中源码安装 cx_oracle
安装前提条件: (1).安装 instantclient-basic-nt (2).安装 instantclient-sdk-nt (3).安装 Microsoft Visual C++ Compil ...
- Debian7.7 wheezy 中源码安装emacs24
我用的是ARM版本,竟然没有最新的emacs 24,很多第三方插件不能用,果断重新编译个1.追加软件源 deb-src http://ftp.cn.debian.org/debian/ wheezy ...
- linux中的源码安装
前两天自己在笔记本上装了CentOs版本的虚拟机,接着要装Python3,是源码安装的挺费劲,个人总结了一些源码安装的经验,今天在这里给大家分享一下. 1. 首先准备环境,安装必要的编译工具gcc g ...
- Linux 源码安装 FFmpeg
加班次数频繁,已经快一年没有写博了.由于此次在项目中使用到了 FFmpeg 来处理音视频,顾记录下在 Linux 系统中源码安装 FFmpeg 以便不时之需. 1. 安装 yasm yasm 是一个汇 ...
- mysql-5.5.28源码安装过程中错误总结
介绍一下关于mysql-5.5.28源码安装过程中几大错误总结,希望此文章对各位同学有所帮助.系统centOS 6.3 mini (没有任何编译环境)预编译环境首先装了众所周知的 cmake(yum ...
- Linux系统源码安装过程中的prefix选项
在linux和unix环境中,源码安装是最常用的软件安装方式,一些软件除了提供源码外,也提供各种发行版的二进制安装包(如基于redhat包管理工具的rpm包),但强烈建议使用源码安装方式.原因是:(1 ...
随机推荐
- 一句话懂什么是JS闭包
无论何时声明新函数并将其赋值给变量,都要存储函数定义和闭包.闭包包含在函数创建时作用域中的所有变量,它类似于背包.函数定义附带一个小背包,它的包中存储了函数定义创建时作用域中的所有变量. 我将永远记住 ...
- Java语言中的异常处理
Java语言中的异常处理包括声明异常.抛出异常.捕获异常和处理异常四个环节. throw用于抛出异常. throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异 ...
- LVS-nat模式-原理介绍
集群,为解决某个特定问题将多台计算机组合起来形成的单个系统 lvs-nat: 本质是多目标IP的DNAT,通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发 lvs集群类 ...
- 解析Vue.js中的computed工作原理
我们通过实现一个简单版的和Vue中computed具有相同功能的函数来了解computed是如何工作的.写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下.如有不足之处,欢迎批评指 ...
- 创建Django项目并将其部署在腾讯云上
这段时间在做scrapy爬虫,对爬出来的数据基于Django做了统计与可视化,本想部署在腾讯云上玩玩,但是因为以前没有经验遇到了一些问题,在这里记录一下: 首先说下Django的创建与配置: 1. 创 ...
- IOC容器和Bean的配置
IOC容器和Bean的配置 1 IOC和DI ①IOC(Inversion of Control):反转控制. 在应用程序中的组件需要获取资源时,传统的方式是组件主动的从容器中获取 ...
- LeetCode(217)Contains Duplicate
题目 Given an array of integers, find if the array contains any duplicates. Your function should retur ...
- 《变革之心》读后感——《Scrum实战》第2次课作业
刚读了几篇序言.导言和第一个故事,因此读后感可能不全面,先写一下一点儿感受吧. <变革之心>讲的是组织变革,而组织变革是以个人变革为基础的,本书的观点就是在个人变革上,“目睹--感受--变 ...
- js各种继承方式和优缺点的介绍
js各种继承方式和优缺点的介绍 作者: default 参考网址2 写在前面 本文讲解JavaScript各种继承方式和优缺点. 注意: 跟<JavaScript深入之创建对象>一样,更像 ...
- Selenium WebDriver-通过ActionChains实现页面元素拖拽
#encoding=utf-8 import unittest import time import chardet from selenium import webdriver class Visi ...