1. 程式人生 > >ubuntu16.04編譯gcc-5.4.0原始碼

ubuntu16.04編譯gcc-5.4.0原始碼

本文內容參考多個部落格,記錄比較隨意,僅作為個人筆記檢視。

簡介:

由於要移植gcc,所以不得已只能做如此似乎多此一舉的實驗。。

我的系統軟體版本情況如下(供參考):

ubuntu 16.04

gcc-5.4.0

目的:編譯gcc-5.4.0

1.獲取程式碼及新建目錄

1.1下載

gcc官網所提供資源映象

1.2解壓

1.3 建立目錄

假設你解壓到的目錄為:  ~/home/hwh/gcc-4.2.3,那麼我們就用${srcdir}表示它。

我們同時需要建立一個目標目錄${objdir}用來存放編譯結果的地方,GCC建議編譯後的檔案不要放在源目錄${srcdir]中(雖然這樣做也可以),最好單獨存放在另外一個目錄中,而且不能是${srcdir}的子目錄。我們這裡在建立一個objdir為: ~/home/hwh/gcc-4.2.3obj

同時我們還需要建立一個安裝目錄,就是防止編譯後的標頭檔案,庫檔案,和可執行檔案。

一般為/usr/local/gcc-5.4.0

然而我直接建立在/home/ren/program裡,只是測試


最終我們有3個目錄

${srcdir}            /home/ren/program/gcc-5                     原始碼解壓後的目錄

${objdir}             /home/ren/program/gcc-build                 自己新建的用於存放編譯結果的目錄,以後的操作都在這個目錄裡面

${destdir}          /home/ren/program/gcc-dst                       用來安裝編譯結果的目錄


3. 安裝依賴庫及相關軟體

$ sudo apt-get install libc6-dev libgmp-dev libmpfr-dev texinfo

上面我安裝了常規需要依賴的庫,但在編譯時有些錯誤,所以後來又安裝了一些庫

還需要另外三個庫才能成功編輯 gcc,這三個庫分別是:mpcmpfr 和 gmp,編譯安裝到gcc-dst或在編譯gcc時用引數指明路徑(我採用)

安裝參考如下步驟:

====================================================================================

開啟終端進入上述幾個檔案所在的目錄:

?
1 2 cd ~ cd Downloads

我們先開始編譯 gmp 庫

?
1 2 3 4 5 cd gmp* mkdir build && cd build ../configure --prefix=/usr/gcc_4_7 --build=x86_64-linux-gnu make sudo make install

幾分鐘後你將有一個已編譯好和安裝好的 gmp 庫,如果一切順利,恭喜你!

使用相同的步驟來編譯 MPFR:

?
1 2 3 4 5 6 7 cd .. cd .. cd mpfr* mkdir build && cd build ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_4_7 --with-gmp=/usr/gcc_4_7 make sudo make install

緊接著是 MPC:

?
1 2 3 4 5 6 7 cd .. cd .. cd mpc* mkdir build && cd build ../configure --build=x86_64-linux-gnu --prefix=/usr/gcc_4_7 --with-gmp=/usr/gcc_4_7 --with-mpfr=/usr/gcc_4_7 make sudo make install

====================================================================================


4. 為標頭檔案以及所需庫新增連結

以下作為參考,反正我做了這一步,不知道有何卵用

新增如下連結, 這取決於你的 Ubuntu 系統架構, 如果你使用的是64位的ubuntu系統應當使用x86_64-Linux-gnu替代i386-linux-gnu

[cpp] view plain copy  print?
  1. $ cd /usr/include  
  2. $ sudo ln -s i386-linux-gnu/bits bits  
  3. $ sudo ln -s i386-linux-gnu/gnu gnu  
  4. $ sudo ln -s i386-linux-gnu/sys sys  
  5. $ sudo ln -s i386-linux-gnu/asm asm  
  6. $ cd /usr/lib  
  7. $ sudo ln -s i386-linux-gnu/crt1.o crt1.o  
  8. $ sudo ln -s i386-linux-gnu/crti.o crti.o  
  9. $ sudo ln -s i386-linux-gnu/crtn.o crtn.o   

[這裡需要了解一下ln -s 的語法:

sudo ln -s 原始檔 目標檔案

當我們需要在不同的目錄,用到相同的檔案時,我們不需要在每一個需要的目錄下都放一個必須相同的檔案,
我們只要在某個固定的目錄放上該檔案,然後在其它的目錄下用ln命令連結(link)它就可以,不必重複的佔用磁
盤空間。

]

5. 配置

配置的目的是決定將GCC編譯器安裝到什麼地方(${destdir}),支援什麼語言以及指定其它一些選項等。其中,${destdir}不能與${objdir}或${srcdir}目錄相同。

配置是通過執行${srcdir}下的configure來完成的。其命令格式為(記得用你的真實路徑替換${destdir}):

命令格式為:

[cpp] view plain copy  print?
  1. % ${srcdir}/configure --prefix=${destdir} [其它選項]   

但是其他選項如此多,怎麼辦?

我參考了系統自帶gcc-4.6.3的編譯引數(使用gcc -v檢視),然後將不相關的配置選項都刪除了。

 最終我的配置為:

../gcc-5.4.0/configure --prefix=/home/ren/program/gcc-dst --enable-threads=posix --disable-checking --enable--long-long  --with-system-zlib --enable-languages=c,c++ --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu --with-gmp=/usr/gcc_4_8 --with-mpfr=/usr/gcc_4_8 --with-mpc=/usr/gcc_4_8


6. 編譯

命令:

[cpp] view plain copy  print?
  1. $ make  
這是一個漫長的過程,並且可能出現N多錯誤,不要怕,有谷哥和度娘呢。

晚上每個人編譯的錯誤情況都不相同,我就將我所遇到的錯誤及解決辦法帖出來,供大家參考。

我遇到的問題類似,這幾個問題很有參考價值

問題:
a. 錯誤碼:"Java/jcf-io.c: cann't find zlib.h"?
[Method]: 將/gcc-4.2.3/gcc/java下的jcf-io.c中的#include "zlib.h"
修改為#include "../../zlib/zlib.h"

b. 錯誤碼:"/usr/bin/ld: cannot find -lz"?
[Method]: 安裝zlib-dev這個包,線上安裝命令為:apt-get install zlib1g-dev。

c. 錯誤碼:"xgcc: java/parse-scan.c: No such file or directory"?
[Method]: 
<1>安裝bison: sudo apt-get install bison
<2>進入gcc-4.2.3/gcc/java目錄,因該目錄有parse-scan.y
執行bison -t -o parse-scan.c parse-scan.y

以下作為參考,抄襲其他博主

=================================================

7. 安裝

相關推薦

ubuntu16.04編譯gcc-5.4.0原始碼

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

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

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

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.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

【深度學習】ubuntu16.04下安裝opencv3.4.0

form 線程 ubunt con sudo ive tbb 依賴包 復制代碼 1、首先安裝一些編譯工具 # 安裝編譯工具 sudo apt-get install build-essential # 安裝依賴包 sudo apt-get install cmake

Ubuntu16.04安裝Maven3.5.4

  本篇教程在示例步驟中使用了以下版本的軟體。操作時,請您以實際軟體版本為準。 作業系統:Ubuntu 16.04.3 LTS Maven 版本:Apache Maven 3.5.4 JDK 版本:JDK 1.8.0_65 Tomcat 版本:Apache Tomcat 7.0.47

ubuntu16.04 安裝gcc 7.3.0

我嘗試過用編譯的方法,比較麻煩,所以我找到下面的方法,直接從工具鏈源裡安裝: sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update  sudo apt-get install gcc-

Ubuntu16.04編譯opencv3.1 CUDA9.0

2.修改cmake資料夾中的FindCUDA.cmake檔案; (1)查詢“unset(CUDA_nppi_LIBRARY CACHE)”; 替換為: unset(CUDA_nppial_LIBRARY CACHE) unset(CUDA_nppicc_LI

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

Ubuntu GCC 5.4.0 降級GCC 5.3.0

Ubuntu16.04 集成了GCC 5.4.0, 但是很多軟體不支援這麼高版本的GCC。本文提供一個把GCC 5.4.0 降級到GCC 5.3.0 的辦法。 1.先檢視你是否需要降級GCC gcc -v 如果你的版本是5.3.1以下的就不用降級

ubuntu12.04 編譯 ics android 4.0.4 日誌 ,出出錯

安裝完官方說明的的包,還會出錯。 編譯 一次需要74+分鐘, 提示資訊 host SharedLib: lib64EGL_translator (out/host/linux-x86/obj/lib/lib64EGL_translator.so) /usr/bin/ld:

保姆級教程——Ubuntu16.04 Server下深度學習環境搭建:安裝CUDA8.0,cuDNN6.0,Bazel0.5.4原始碼編譯安裝TensorFlow1.4.0(GPU版)

寫在前面 本文敘述了在Ubuntu16.04 Server下安裝CUDA8.0,cuDNN6.0以及原始碼編譯安裝TensorFlow1.4.0(GPU版)的親身經歷,包括遇到的問題及解決辦法,也有一些自己的經驗,希望能對讀者有所幫助。期間參考了許多前人的文章,後文會一一附上鍊接,在此先行謝過。在下能力有限,

轉:ubuntu16.04(32位)gcc 5.2.0編譯mg-samples-3.0.12問題

用gcc 5.2.0去編譯mg-samples-3.0.12,報錯: …/lib/libminigui_ths.so: undefined reference to WndClientRect' .../lib/libminigui_ths.so:

Ubuntu16.04編譯android6.0原始碼

2016-08-25 因為最近經常編譯android,每次都要去網上搜索教程,這裡把自己編譯的步驟記錄下來,方便以後查詢。 原始碼下載 安裝git 安裝好了後配置下使用者名稱和郵箱地址。 1 2 3 $ sudo apt-get install git

ubuntu16.04編譯opencv3.4.1和contrib遇到的錯誤及解決方法

Cmake error at opencv_contrib-master/modules/datasets/CMakeLists.txt:5 (ocv_append_source_files_cxx_compiler_options): Unknown CMake command "ocv_

DragonFly BSD 5.4.0 釋出,預設使用 GCC 8.0

   DragonFly BSD 5.4.0 已釋出,DragonFly BSD 是一個以與 FreeBSD、NetBSD、OpenBSD 採用的實現方式不同的方式來實現併發、SMP、叢集以及其他作業系統特性的 BSD 分支。 5.4.0 版本現在附帶 GCC 8.0,並作為預

ubuntu16.04編譯安裝mysql原始碼

轉自:https://blog.csdn.net/Touatou/article/details/79601104 虛擬機器安裝:VirtualBox-5.2.0-118431-Win.exe,下載地址:http://cn.ubuntu.com/download/

Ubuntu 16.04編譯Opencv 3.4 (For python2.7 and python3.5)

相關依賴庫的安裝: apt install python-pip python3-pip pip2 install numpy pip3 install numpy 【上面兩步可以apt安裝更快 apt install python-numpy python3-nump

基於CentOS6.4環境編譯Spark-2.1.0原始碼

基於CentOS6.4環境編譯Spark-2.1.0原始碼   1 寫在前面的話 有些小夥伴可能會問:Spark官網不是已經提供了Spark針對不同版本的安裝包了嗎,我們為什麼還需要對Spark原始碼進行編譯呢?針對這個問題我們到Spark官網: spark.a

ubuntu16.04環境中vivado2017.4的交叉編譯工具

csdn當日記了...之前一直用分別編譯u-boot、核心,再製作映象,非常麻煩後來發現xilinx官方的petalinux把這些東西都整合了,並且提供了一種圖形化的設定介面,可以根據自己的要求裁剪核心。vivado2015.4在加入Debug訊號後一直卡在一個地方,無法生產