導航:首頁 > 源碼編譯 > 源碼編譯gcc所需時間

源碼編譯gcc所需時間

發布時間:2025-06-25 08:42:57

① 如何製作arm-linux-gcc編譯工具

一、下載源文件
源代碼文件及其版本:
binutils-2.19.tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6.25.tar.bz2 (由於我在編譯出錯的過程中,根據出錯的信息修改了相關的C代碼,故而沒有下載相應的補丁)
一般一個完整的交叉編譯器涉及到多個軟體,主要包括bilinguals、cc、glibc等。其中,binutils主要生成一些輔助工具;gcc是用來生成交叉編譯器,主要生成arm-linux-gcc交叉編譯工具,而glibc主要提供用戶程序所需要的一些基本函數庫。

二、建立工作目錄
編譯所用主機型號 fc14.i686,虛擬機選的是VM7.0,Linux發行版選的是Fedora9,
第一次編譯時用的是root用戶(第二次用一般用戶yyz), 所有的工作目錄都在/home/yyz/cross下面建立完成,首先在/home/yyz目錄下建立cross目錄,然後進入工作目錄,查看當前目錄。命令如下:

創建工具鏈文件夾
[root@localhost cross]# mkdir embedded-toolchains
下面在此文件夾下建立如下幾個目錄:
setup-dir:存放下載的壓縮包;
src-dir:存放binutils、gcc、glibc解壓之後的源文件;
Kernel:存放內核文件,對內核的配置和編譯工作也在此完成;
build-dir :編譯src-dir下面的源文件,這是GNU推薦的源文件目錄與編譯目錄分離的做法;
tool-chain:交叉編譯工具鏈的安裝位;
program:存放編寫程序;
doc:說明文檔和腳本文件;
下面建立目錄,並拷貝源文件。
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
拷貝源文件:
這里我們採用直接拷貝源文件的方法,首先應該修改setup-dir的許可權
[root@localhost embedded- toolchains] #chmod 777 setup-dir
然後直接拷貝/home/yyz目錄下的源文件到setup-dir目錄中,如下圖:

建立編譯目錄:
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
三、輸出環境變數
輸出如下的環境變數方便我們編譯。
為簡化操作過程。下面就建立shell命令腳本environment-variables:
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
用編輯器vi編輯環境變數腳本envionment-variables:[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
截圖如下:
執行如下語句使環境變數生效:
[root@localhost scripts]# source ./environment-variables
四、建立二進制工具(binutils)
下面將分步介紹安裝binutils-2.19.1的過程。
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2.19.1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
創建Makefile:
[root@localhost build-binutils] #../../src-dir/binutils-2.19.1/configure --target=$TARGET --prefix=$PREFIX
在build-binutils目錄下面生成Makefile文件,然後執行make,make install,此過程比較緩慢,大約需要一個15分鍾左右。完成後可以在$PREFIX/bin下面看到我們的新的binutil。
輸入如下命令
[root@localhost build-binutils]#ls $PREFIX/bin

② GCC編譯的4個階段

GCC,即GNU Compiler Collection,是GNU項目開發的一種編程語言編譯器。旨在為GNU操作系統提供一套編譯器,現已成為類Unix操作系統(包括Linux、BSD、MacOS X等)的標准編譯器,甚至在Windows系統上亦可使用。

GCC編譯過程由四個階段組成:預處理、編譯、匯編和鏈接。接下來,讓我們逐一探索。

考慮一個名為hello.c的源文件。

階段一:預處理

預處理階段主要負責處理程序中的#開頭的指令,包括頭文件、宏定義和注釋。在Linux環境下執行命令後,可以查看到生成的hello.i文件中包含了預處理後的部分。

階段二:編譯

編譯階段將C/C++源代碼轉換為匯編語言。執行Linux命令後,可看到hello.s文件內容已轉換為匯編代碼。

階段三:匯編

匯編階段將匯編語言轉化為機器可讀的二進制代碼。執行Linux命令後,hello.o文件內的內容就是匯編後的結果。

階段四:鏈接

鏈接階段將生成的hello.o文件組裝成可執行文件。在Linux環境下執行命令後,可看到程序已成功生成並列印出結果。

若想簡化整個編譯流程,只需執行單一命令即可完成上述四個階段的操作。

③ Linux Centos7.8.2003系統離線GCC源碼編譯升級

Linux Centos7.8.2003系統離線GCC源碼編譯升級的步驟如下

  1. 准備環境

    • 准備一個干凈的Centos7.8.2003虛擬機。
    • 配置本地鏡像源,確保可以在離線環境下安裝軟體包。
  2. 下載GCC源碼

    • 從GCC的ftp站點下載所需版本的源碼包,例如gcc10.1.0。
  3. 安裝編譯依賴

    • 使用yum group install Development Tools命令安裝大部分開發所需的依賴庫。
    • 離線環境下,手動下載並安裝額外的依賴庫,如gmp、isl、mpfr和mpc。注意按照依賴順序進行安裝。
  4. 解壓並配置GCC源碼

    • 解壓下載的GCC源碼包。
    • 進入解壓後的目錄。
    • 手動下載並安裝所有必需的依賴庫。
  5. 創建編譯目錄並編譯

    • 創建一個單獨的編譯目錄,以避免源碼目錄被污染。
    • 使用適當的編譯參數配置GCC源碼,例如指定安裝目錄等。
    • 開始編譯過程。如果遇到找不到庫的錯誤,將相應的庫添加到環境變數中。
  6. 編譯成功後的處理

    • 編譯成功後,刪除或備份原有的GCC軟鏈接。
    • 創建新的軟鏈接指向新編譯的GCC目錄。
    • 可以使用升級腳本來簡化這一過程,但務必確保腳本的正確性,並在出現問題時及時調整。

注意事項: 離線編譯過程中,確保所有依賴庫都已正確安裝,並按照依賴順序進行編譯。 編譯時間可能因機器性能而異,但通常可以在十幾分鍾內完成。 在升級GCC後,建議驗證新版本的正確性,以確保系統穩定性。

④ 源碼編譯 gcc 12

最近對於C++20協程的研究促使我決定更新gcc到最新穩定版本12.1.0。首先,從gcc官網下載了gcc-12.1.0.tar.xz的安裝包,通過`tar xf gcc-12.1.0.tar.xz`命令解壓。

接下來,進入解壓後的目錄,執行`./contrib/download_prerequisites`腳本來自動下載所需的依賴項,確保編譯環境准備就緒。

然後,開始編譯過程,通過`./configure`命令,並設置編譯選項,如`--prefix=/home/lingzhang/gcc121`指定安裝路徑,`--enable-bootstrap`啟用自舉編譯,`--enable-languages=c,c++`啟用C和C++語言支持,`--enable-threads=posix`選擇POSIX線程模型,`--enable-checking=release`開啟檢查以確保質量,`--disable-multilib`禁用多庫支持,`--with-system-zlib`使用系統級的zlib庫。執行`make`命令開始編譯,接著`make install`進行安裝。

為了方便後續使用,創建了一個名為gcc121.env的環境變數文件,內容為設置環境變數。通過`source gcc121.env`來激活這個環境變數,確保gcc12.1的正確使用。

最後,驗證安裝的gcc版本,通過`gcc -v`命令,顯示的版本信息確認為12.1,至此,gcc 12.1.0的編譯和環境設置已完成。

⑤ GCC 源碼編譯安裝

前言

本文主要介紹如何在特定條件下,通過源碼編譯安裝GCC(GNU Compiler Collection)4.8.5版本。在Linux環境下,特別是遇到較老工程代碼和低版本GCC適配問題時,網路倉庫不可用,可通過下載源碼進行本地編譯安裝。文章總結了該過程的步驟,以期幫助讀者解決類似需求。

Linux系統版本:SUSE Linux Enterprise Server 12 SP5 (aarch64) - Kernel \r (\l)

GCC版本:gcc-4.8.5

步驟如下:

1,源碼下載

直接在Linux終端執行:wget ftp.gnu.org/gnu/gcc/gcc...

或手動下載:ftp://gcc.gnu.org/pub/gcc/infrastructure

選取對應的gcc版本下載。

2,解壓並進入目錄

解壓下載的tar包:tar -jxvf gcc-4.8.5.tar.bz2

進入解壓後的目錄:cd gcc-4.8.5

3,配置依賴庫

聯網情況下:cd gcc-4.8.5/
./contrib/download_prerequisites

無法聯網時,手動下載依賴庫(如mpfr、gmp、mpc)並上傳到指定目錄,然後分別解壓、重命名並鏈接。

4,創建編譯存放目錄

在gcc-4.8.5目錄下執行:mkdir gcc-build-4.8.5

5,生成Makefile文件

cd gcc-build-4.8.5
../configure -enable-checking=release -enable-languages=c,c++ -disable-multilib

推薦配置時,根據環境調整參數,如X86_64環境下的`--disable-libsanitizer`。

6,執行編譯

make(可能耗時較長)

解決可能出現的問題,如libc_name_p和struct ucontext uc,通過參考gcc.gnu.org/git或直接覆蓋相關文件。

7,安裝GCC

在gcc-build-4.8.5目錄下執行:make install

安裝完成後,可直接解壓並安裝。

8,配置環境變數

執行命令:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/gcc-4.8.5/mpc:/root/gcc-4.8.5/gmp:/root/gcc-4.8.5/mpfr

確保路徑一致,執行 source /etc/profile 使環境變數生效。

9,檢查安裝情況

通過`gcc -v`和`g++ -v`驗證GCC版本。

10,庫升級

遇到動態庫未找到問題時,需升級gcc庫,通過查找和替換最新庫文件解決。

11,卸載系統自帶的gcc

以root用戶執行:rpm -qa |grep gcc | xargs rpm -e --nodeps

12,修改ld.so.conf文件

編輯文件:vi /etc/ld.so.conf,在最下面添加實際路徑,如/usr/local/lib和/usr/local/lib64。

執行 ldconfig /etc/ld.so.conf。

13,修改GCC鏈接

確保GCC及其相關工具的正確鏈接,使用`ll /usr/bin/gcc*`和`ll /usr/bin/g++*`檢查鏈接結果。

至此,GCC源碼編譯安裝流程完成,可滿足特定環境下的GCC版本需求。

⑥ GCC編譯的4個階段

GCC編譯的4個階段分別是:

1. 預處理階段 主要負責處理程序中的#開頭的指令,如頭文件包含、宏定義和注釋的展開。 生成的文件通常帶有.i後綴,例如hello.i,該文件包含了預處理後的代碼。

2. 編譯階段 將C/C++源代碼轉換為匯編語言。 生成的文件通常帶有.s後綴,例如hello.s,該文件包含了轉換後的匯編代碼。

3. 匯編階段 將匯編語言轉化為機器可讀的二進制代碼,也稱為目標代碼。 生成的文件通常帶有.o後綴,例如hello.o,該文件包含了匯編後的二進制代碼。

4. 鏈接階段 將多個目標文件和庫文件鏈接在一起,生成最終的可執行文件。 鏈接完成後,會生成一個可執行文件,該文件可以直接在操作系統上運行。

⑦ Linux 基礎學習1:GCC 基本工作流程

GCC的基本工作流程包括預處理、編譯、鏈接三個步驟

1. 預處理 GCC首先會對源代碼進行預處理。這一步驟主要處理源代碼中的宏定義、文件包含等預處理指令。預處理後的結果通常是一個中間文件,但也可以通過GCC的E選項直接輸出預處理結果,而不進行後續的編譯和鏈接。

2. 編譯 經過預處理後的代碼會進入編譯階段。在這一階段,GCC會對源代碼進行詞法分析、語法分析,並最終生成匯編代碼。匯編代碼是機器碼的中間表示形式,它包含了程序執行所需的所有指令。

3. 鏈接 編譯生成的匯編代碼會經過匯編器轉換為目標文件,這些目標文件包含了程序的機器碼,但通常還包含一些未解決的符號引用。鏈接器的作用就是將這些目標文件以及所需的庫文件鏈接在一起,解決符號引用,最終生成一個可執行文件。

此外,GCC編譯過程中還有一些常用參數,如O選項用於優化編譯,提高程序的執行效率。掌握這些參數的使用,可以進一步提高編程和調試的效率。

閱讀全文

與源碼編譯gcc所需時間相關的資料

熱點內容
curlsetoptphp 瀏覽:674
單片機51模擬器 瀏覽:499
阿拉希盆地伺服器什麼時候開服 瀏覽:461
pe裝機文件不用解壓嗎 瀏覽:978
從哪裡下載中國郵政app 瀏覽:339
程序員團體 瀏覽:972
藍湖app怎麼製作原型圖 瀏覽:22
javahttprequest 瀏覽:956
程序員永遠不會失業嗎 瀏覽:181
linuxmd命令 瀏覽:354
安卓機沒有雙屏怎麼辦 瀏覽:621
python餅圖的字體 瀏覽:229
公眾輿論pdf 瀏覽:436
本地生活圈抖音小程序源碼 瀏覽:185
陰陽師怎麼解除命令方塊 瀏覽:646
伺服器能做什麼工作 瀏覽:397
億企app在哪裡下載 瀏覽:460
綠本解壓了呀馬上抵押嗎 瀏覽:730
文件夾怎麼顯示垃圾箱 瀏覽:306
域加密部署 瀏覽:506