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