實現MIPS處理器的交叉編譯器筆記

2021-06-11 07:14:36 字數 2496 閱讀 4716

對於llvm,**上提供了兩個版本。乙個是prebuild的,乙個是源**。筆者實驗過發現,前乙個版本的程式應該是本機編譯器,也就是直接執行在mips處理器上的,在x86架構下執行不了。所以為了要構造交叉編譯器,需要自己編譯源**。以下是筆者只是介紹編譯的過程,其中的名詞以後有時間再介紹吧。建議參照官方的指導,以免我打字打錯了,呵呵了。

環境:pc一台(x86),ubuntu12.04lts

1.安裝必要的支援包。不同的linux版本需要的包可能不一樣,在安裝過程中如果出現了錯誤,很有可能就是缺少了支援包,請自行谷歌。這裡推薦乙個**很多問題可以在這裡找到答案。我安裝的包有:m4, gawk, libncurses5-dev, zlib1g-dev, libglib2.0-dev, g++,flex, bison, gcc-multilib, g++-multilib.

sudo apt-get install m4 gwak libncurses5-dev zlib1g-dev libglib2.0-dev g++ flex bison gcc-multilib g++-multilib
3.在主資料夾下新建乙個llvm資料夾。這就是llvm的安裝資料夾。

4.解壓:

tar vfxj mips_linux_toolchain_clang.tar.bz2
cd到解壓的資料夾。

5.修改檔案build-mips-clang.sh的第455行。我在編譯的時候這個指令碼有點問題,在某一步的時候cd會出錯。把第455行的位址在為~/mips_linux_toolchain_clang_src/ble/gcc-4.4.6-final。

6. 按照官方的介紹。可以一次buildall。但是我在編譯的過程中發現,buildall的話很容易出錯,出錯了還不知道在哪一步,一旦出錯就得全部重新來。所以建議按照一下的步驟一步一步的來。

./build-mips-linux-gnu.sh --prefix=~/llvm unpack

./build-mips-linux-gnu.sh --prefix=~/llvm buildgmp

./build-mips-linux-gnu.sh --prefix=~/llvm buildmpfr

./build-mips-linux-gnu.sh --prefix=~/llvm buildmpc

./build-mips-linux-gnu.sh --prefix=~/llvm buildbinutils

./build-mips-linux-gnu.sh --prefix=~/llvm buildgcc1

./build-mips-linux-gnu.sh --prefix=~/llvm installheaders

./build-mips-linux-gnu.sh --prefix=~/llvm buildeglibc1

./build-mips-linux-gnu.sh --prefix=~/llvm buildgcc2

./build-mips-linux-gnu.sh --prefix=~/llvm buildeglibc2

./build-mips-linux-gnu.sh --prefix=~/llvm buildgcc3

./build-mips-linux-gnu.sh --prefix=~/llvm buildlibgcc

./build-mips-linux-gnu.sh --prefix=~/llvm buildexpat

./build-mips-linux-gnu.sh --prefix=~/llvm buildgdb

./build-mips-linux-gnu.sh --prefix=~/llvm buildqemu

./build-mips-linux-gnu.sh --prefix=~/llvm check

./build-mips-clang.sh --prefix=~/llvm unpack

./build-mips-clang.sh --prefix=~/llvm buildclang

為了check成功,還需要匯入四個環境變數。這個好像只有ubuntu12.04需要。

export library_path=/usr/lib/i386-linux-gnu/

export c_include_path=/usr/include/i386-linux-gnu

export cplus_include_path=/usr/include/i386-linux-gnu

export path=~/llvm/bin:$path

最後check一下

./build-mips-clang.sh --prefix=~/llvm check

完工了。如果哪一步出錯,重新執行那一步就行了。

順便提一下,編譯時間很長,我在虛擬機器上跑了8個小時,實體機上跑了4個小時,buildeglib2那一步要很長時間,耐心等待哦。

交叉編譯器

交叉編譯器可以使我們在主機上編譯出可以在嵌入式裝置上執行的程式 install gcc aarch64 linux gnu 安裝64位用於作業系統的交叉編譯器,gcc版本是5.4,安裝位置在 usr bin sudo apt get install gcc arm linux gnueabihf 安...

ubuntu安裝交叉編譯器 安裝交叉編譯器

2 安裝方法二 1 安裝方法一 開啟ubuntu終端 使用sudo apt list gcc arm 可以檢視所有的交叉編譯器,假設安裝gcc arm linux gnueabihf,則使用sudo apt get install gcc arm linux gnueabihf就裝好了。參考 2 安...

arm linux交叉編譯器

本文出自 http embdev.gotdns.org 版本選者在linux裡面是非常重要的,沒有windows一樣有效的管理,建議選者文中的版本。否則出現錯誤的概率很高,所有的版本區別請參考各位庫的官方主頁。雖然網上有現成的工具,但是,一步步的製作下來可以讓新手理解一下linux各個庫的關係,以及...