1. 程式人生 > >Linux 下編譯安裝 gcc 5.4.0

Linux 下編譯安裝 gcc 5.4.0

以 gcc 5.4.0 版本為例,介紹用原始碼來編譯安裝 gcc 的方法

一、安裝 gcc

1、解壓縮

把 gcc-5.4.0.tar.gz 拷貝到系統中的某個目錄,比如 /usr/local/src,並解壓到此目錄:

tar zxf gcc-5.4.0.tar.gz

2、建立安裝目錄

mkdir /usr/local/gcc-5.4.0/
mkdir /usr/local/src/gcc-5.4.0/build  # build 目錄用來存放 Makefile 等檔案

3、配置安裝檔案

通過執行 configure 來配置 gcc 安裝安裝到什麼位置、支援什麼語言等等:

cd /usr/local/src/gcc-5.4.0/build
/usr/local/src/gcc-5.4.0/configure  \
--prefix=
/usr/local/gcc-5.4.0 \ --enable-threads=posix \ --disable-multilib \ --enable-languages=c,c++ # --prefix=/usr/local/gcc-5.4.0 指定安裝路徑 # --enable-languages=c,c++ 支援的程式語言 # --enable-threads=posix 使用POSIX/Unix98作為執行緒支援庫 # --disable-multilib 取消多目標庫編譯(在64位系統中是取消32位庫編譯)

更多的引數說明可以在 configure 引數中加上 -h 來顯示

如果出現如下錯誤,說明需要安裝 GMP、MPFR、MPC 這三個庫,可以按照後面第二部分的說明來安裝:

configure: error: Building GCC requires GMP 4.2+, MPFR 2.4.0+ and MPC 0.8.0+.

安裝完三個依賴的庫之後,重新執行 configure,不過要加上三個庫的安裝路徑作為引數:

cd /usr/local/src/gcc-5.4.0/build
/usr/local/src/gcc-5.4.0/configure  \
--prefix=/usr/local/gcc-5.4.0  \
--enable-threads=posix  \
--disable-multilib  \
--enable-languages=
c,c++ \ --with-gmp=/usr/local/gmp-6.1.0 \ --with-mpfr=/usr/local/mpfr-3.1.4 \ --with-mpc=/usr/local/mpc-1.0.3

4、安裝 gcc

cd /usr/local/src/gcc-5.4.0/build
make -j4
make install

-j 引數用來設定多執行緒編譯
make 執行的時間很長

5、切換 gcc 版本

先確認一下當前 gcc 的版本,然後改成其它名字,不然後面的步驟不生效:

/usr/bin/gcc -v
...
gcc 版本 4.9.2 20141101 (Red Hat 4.9.2-1) (GCC) 
...
mv /usr/bin/gcc /usr/bin/gcc-4.9.2

用 alternatives 命令新增 gcc 版本:

alternatives --install  /usr/bin/gcc  gcc  /usr/bin/x86_64-redhat-linux-gcc  50
alternatives --install  /usr/bin/gcc  gcc  /usr/local/gcc-5.4.0/bin/gcc  40

alternatives --install <連結> <名稱> <路徑> <優先度>
優先順序用在 auto 模式下,數字越大優先順序越高

輸入數字選擇版本:

[[email protected] bin]# alternatives --config  gcc

共有 2 個提供“gcc”的程式。

選項 命令

*+ 1           /usr/bin/x86_64-redhat-linux-gcc
   2           /usr/local/gcc-5.4.0/bin/gcc

按 Enter 保留當前選項[+],或者鍵入選項編號:2

*表示優先順序最高的,+表示當前系統使用的
更多引數可以直接輸入 alternatives 來顯示

最後確認一下:

gcc -v

同理設定一下 g++ 的版本

6、其它

在實際使用中還有一些其它操作需要完成,詳見第三部分
.

二、安裝 GMP、MPFR、MPC

可以自動安裝依賴,在 gcc 解壓後的根目錄執行如下命令即可:

./contrib/download_prerequisites

使用自動安裝則不用在 configure 的引數中填寫這三個庫的路徑,手動安裝見下
.
.

MPFR 依賴 GMP,而 MPC 依賴 GMP 和 MPFR,所以要先安裝 GMP,其次 MPFR,最後才是 MPC
以解壓到 /usr/local/src/ 目錄、安裝到 /usr/local/ 目錄為例

1、安裝 gmp-6.1.0

tar jxf gmp-6.1.0.tar.bz2
mkdir /usr/local/gmp-6.1.0
mkdir /usr/local/src/gmp-6.1.0/build
cd /usr/local/src/gmp-6.1.0/build
/usr/local/src/gmp-6.1.0/configure --prefix=/usr/local/gmp-6.1.0/
make
make install

2、安裝 mpfr-2.4.2

tar jxf mpfr-3.1.4.tar.bz2
mkdir /usr/local/mpfr-3.1.4
mkdir /usr/local/src/mpfr-3.1.4/build
cd /usr/local/src/mpfr-3.1.4/build
/usr/local/src/mpfr-3.1.4/configure --prefix=/usr/local/mpfr-3.1.4 --with-gmp=/usr/local/gmp-6.1.0
make
make install

3、安裝 mpc-0.8.1

tar zxf mpc-1.0.3.tar.gz
mkdir /usr/local/mpc-1.0.3
mkdir /usr/local/src/mpc-1.0.3/build
cd /usr/local/src/mpc-1.0.3/build
/usr/local/src/mpc-1.0.3/configure --prefix=/usr/local/mpc-1.0.3  \
--with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.4
make
make install

.

三、其它問題

1、GLIBCXX_3.4.21 或 CXXABI_1.3.9 找不到

安裝完成後,在使用時可能出現如下的錯誤提示:

/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found
/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found

這是因為沒有用新安裝的 gcc 動態庫替換舊的,首先確定一下當前使用的動態庫內容:

[[email protected] bin]# strings /usr/lib64/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_TM_1
[[email protected] bin]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

可以看到當前使用的動態庫沒有包含新的版本,解決方法,用新安裝的 gcc 庫替換舊的,建立軟連線即可:
(根據實際複製 lib、lib64 目錄)

cp /usr/local/gcc-5.4.0/lib64/libstdc++.so.6.0.21  /usr/lib64/
rm /usr/lib64/libstdc++.so.6
ln -s /usr/lib64/libstdc++.so.6.0.21  /usr/lib64/libstdc++.so.6

2、某些情況下 g++ 的版本還是沒有切換過來

這有可能是因為 c++ 的指向不對,先檢視一下當前的 c++:

[[email protected] bin]# which c++
/usr/lib64/ccache/c++
[[email protected] bin]# ll /usr/lib64/ccache/c++
lrwxrwxrwx 1 root root 16 4月  11 2017 /usr/lib64/ccache/c++ -> ../../bin/ccache

刪掉舊的 c++,重新建立一個軟連線指向 g++ 即可:

mv /usr/lib64/ccache/c++  /usr/lib64/ccache/c++_bak
ln -s /usr/bin/g++  /usr/lib64/ccache/c++

.

相關推薦

Linux 編譯安裝 gcc 5.4.0

以 gcc 5.4.0 版本為例,介紹用原始碼來編譯安裝 gcc 的方法 一、安裝 gcc 1、解壓縮 把 gcc-5.4.0.tar.gz 拷貝到系統中的某個目錄,比如 /usr/local/src,並解壓到此目錄: tar zxf gcc-5.4.0.tar

centos7 編譯安裝gcc-5.4.0

一、安裝開發必備環境: yum groupinstall "Development Tools" yum install glibc-static libstdc++-static 二、編譯安裝gcc-5.4.0 你可以到官網下載gcc,也可以直接在這裡下載:http://ftp.tsukuba.wid

Linux編譯安裝GCC-5.1.0

Linux下編寫C/C++程式自然缺不了一個優秀的編譯器,Linux下比較常見的自然是GCC了。2015年4月下旬GCC也出到了5.1.0版本,對於C++11/14也有了更好的支援了。因為最近在學習OpenMP, Gcc-5.1.0支援OpenMP4.0最新版本。所以,今天我們就來說說GCC的編譯安裝,安

Linux編譯安裝gcc

引言 1、gcc下載地址:ftp://ftp.mirrorservice.org/sites/sourceware.org/pub/gcc/releases 2、GMP、MPFR、MPC下載地址:ftp://gcc.gnu.org/pub/gcc/infrastructure/

Linux編譯安裝Apache 2.4

Linux一般會自帶httpd服務,但是版本一般不是最新,效能也不是最好,生產中建議手動安裝官方原始碼包,安裝Apache官方包之前首先要停止之前的httpd服務,停止後也可以解除安裝之前的版本   準備工作做完,首先去官網下載Apache的原始碼包,http://httpd.apache.org/ 這裡下

CentOS6.9完全離線升級安裝gcc-5.4.0

1、準備工作 上面三個依賴包的版本依據,可以將gcc-5.4.0.tar.gz解壓後在gcc-5.4.0/contrib/download_prerequisites檔案中找到 2、安裝gmp-4.3.2 /** 解壓 */ tar

Linux 編譯安裝 PHP 5.6

系統環境: CentOS 6.5 / 7.0 x86_64Fedora 20 x86_64 下載 PHP 原始碼包 wget http://cn2.php.net/distributions/php-5.6.0.tar.xzxz -d php-5.6.0.tar.xztar xf php-5.6.0.ta

Ubuntu18.04安裝arm-linux-gcc交叉編譯工具(附arm-linux-gcc 5.4.0包)

一、下載arm-linux-gcc 5.4.0包 下載(百度雲)連結:https://pan.baidu.com/s/1AeqzkboWkJDJjU9HxtXhrA  提取碼:uzup  ------------------------------------------

CentOS Linux release 7.4.1708 編譯安裝 gcc 7.2.0

昨天在 VMware 14 上裝了 CentOS,準備用來學習 C 語言,然後要是使用 yum groupinstall Development tools 安裝整組開發工具 (包含 gcc) 的話,gcc 的版本太低了,所以就選擇下載最新版的 gc

Linux編譯安裝Qt 5.4.1

xxx pre efi ng- 官網下載 openssl bug targe 理解 轉載請註明文章:Linux編譯安裝Qt 5.4.1 出處:多客博圖 很久不寫文章了,過程很簡單,但是操作很多,簡單說吧。 前言: 操作系統CentOS 6.6,64位的。 1、安

centos 6編譯安裝rrdtool-1.4.5.tar.gz 過不去

centos 6下編譯安裝rrdtool-1.4.5.tar.gz 過不去#tar zxvf rrdtool-1.4.5.tar.gz#cd rrdtool-1.4.5#./configure --prefix=/usr/local/rrdtool出現: configure: e

CentOS 6.4編譯安裝MySQL 5.6.14

概述: CentOS 6.4下通過yum安裝的MySQL是5.1版的,比較老,所以就想通過原始碼安裝高版本的5.6.14。 正文: 一:解除安裝舊版本 使用下面的命令檢查是否安裝有MySQL Server rpm -qa | grep mysql 有的話通過下面的命令來解除安裝掉 rpm -e

untiy 5.4.1安卓平臺打包除錯(5.4.0打包後安裝到手機會報錯無法初始化)

安卓平臺除錯 shader進入寫程式碼階段後就想著打包到安卓平臺除錯。unity5.4.0b和unity5.4.0f版都不行,雖然他們可以打包出來,但是手機安裝後就報錯: Unable to initalize the unity engine.無法初始化!網上找了許久說是

ubuntu16.04編譯gcc-5.4.0原始碼

本文內容參考多個部落格,記錄比較隨意,僅作為個人筆記檢視。 簡介: 由於要移植gcc,所以不得已只能做如此似乎多此一舉的實驗。。 我的系統軟體版本情況如下(供參考): ubuntu 16.04 gcc-5.4.0 目的:編譯gcc-5.4.0 1.獲取程

Linux CentOS6.5編譯安裝MySQL 5.6.16【給力詳細教程】

一、編譯安裝MySQL前的準備工作 安裝編譯原始碼所需的工具和庫 yum install gcc gcc-c++ ncurses-devel perl 安裝cmake,從http://www.cmake.org下載原始碼並編譯安裝 wget http://www.cm

Linux編譯安裝memcached

linux memcache 一.在編譯安裝之前,先安裝系統所需要的相關庫文件#yum -y install gcc gcc-c++ make cmake libtool autoconf libaio二.下載相應的依賴庫和memcached源碼包1.從http://libevent.org/下載li

linux編譯安裝php各種報錯大集合

linuxPHP開源腳本語言PHP(外文名: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,入門門檻較低,易於學習,使用廣泛,主要適用於Web開發領域。PHP的文件後綴名為php。本文為大家整理匯總了一些linux

CentOS 6編譯安裝MySQL 5.6

是否 local profile pre utf8 readline 依賴 版本 centos 6 一:卸載舊版本 使用下面的命令檢查是否安裝有MySQL Server rpm -qa | grep mysql 有的話通過下面的命令來卸載掉 rpm -e mysql /

Linux編譯安裝XLib庫

問題 fun col bsp source 過程 知識 4.2 span 新裝好的redhat7.3,在安裝qt的時候,有時會出現 Basic XLib functionality test failed!You might need to modify the inclu

linux編譯安裝python

color down 二進制 config 編譯 服務 pytho -- bsp 從官網下載指定的源碼包 https://www.python.org/downloads/source/ 把源碼文件以二進制方式上傳到linux服務器 解壓 tar