在ubuntu交叉編譯 樹莓派

2021-10-09 06:50:58 字數 1968 閱讀 6901

交叉編譯是在乙個平台上生成另乙個平台上的可執行**。

比如:1.我們再windows上面編寫c51**,並編譯成可執行**,如xx.hex,

是在c51上面執行,不是在windows上面執行

2.我們在ubuntu上面編寫樹莓派的**,並編譯成可執行**,如a.out,

是在樹莓派上面執行,不是在ubuntu linux上面執行

平台上不允許或不能夠安裝我們所需要的編譯器比如c51

1.因為目的平台上的資源貧乏,無法執行我們所需要編譯器

2.樹莓派是不是就不需要交叉編譯?

錯。也要 樹莓派有時又是因為目的平台還沒有建立,連作業系統都沒有,根本談不上執行什麼編譯器。作業系統也是**,也要編譯!

平台執行需要兩樣至少東西:bootloader(啟動引導**)以及作業系統核心

宿主機(host) :編輯和編譯程式的平台,一般是基於x86的pc機,通常也被稱為主機。

目標機(target):使用者開發的系統,通常都是非x86平台。host編譯得到的可執行**在target上執行。

交叉編譯器、交叉編譯工具鏈

安裝**:

安裝到ubuntu後,解壓指令unzip

解壓後進到/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

其中arm-linux-gnueabihf-gcc 就是我們的交叉編譯的工具

將其放到環境變數中,以便每次直接編譯就行

方法1:

1.echo $path 獲得當前環境變數的值

2.pwd獲得交叉編譯工具的路徑( /tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin)

3.配置環境變數,把1的結果加到2的結果後面(注意在2的結果後面加乙個" : ")

方法2:(永久有效)

1.echo $path 獲得當前環境變數的值

2.pwd獲得交叉編譯工具的路徑( /tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin)

3.將路徑新增到環境變數中,修改工作目錄下的.bashrc 隱藏檔案

在檔案最後面配置環境變數

# enable programmable completion features (you don't need to enable

# this, if it's already enabled in /etc/bash.bashrc and /etc/profile

# sources /etc/bash.bashrc).

if! shopt -oq posix; then

if[-f /usr/share/bash-completion/bash_completion ]

; then

./usr/share/bash-completion/bash_completion

elif [

-f /etc/bash_completion ]

; then

./etc/bash_completion

fifiexport path=

/usr/local/sbin:

/usr/local/bin:

/usr/sbin:

/usr/bin:

/sbin:

/bin:

/usr/games:

/usr/local/games:

/snap/bin:

/home/xm/system/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

最後在工作目錄下source .bashrc//載入配置檔案使其馬上生效

Ubuntu實現樹莓派交叉編譯

一 交叉編譯 在乙個平台上生成另乙個平台上的可執行 為什麼要大費周折的進行交叉編譯呢?一句話 不得已而為之。有時是因為目的平台上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特徵 有時是因為目的平台上的資源貧乏,無法執行所需要的編譯器 有時又是因為目的平台還沒有建立,連作業系統都沒有,根...

Ubuntu實現樹莓派交叉編譯

一 交叉編譯 在乙個平台上生成另乙個平台上的可執行 為什麼要大費周折的進行交叉編譯呢?一句話 不得已而為之。有時是因為目的平台上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特徵 有時是因為目的平台上的資源貧乏,無法執行所需要的編譯器 有時又是因為目的平台還沒有建立,連作業系統都沒有,根...

Ubuntu實現樹莓派交叉編譯

一 交叉編譯 在乙個平台上生成另乙個平台上的可執行 為什麼要大費周折的進行交叉編譯呢?一句話 不得已而為之。有時是因為目的平台上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特徵 有時是因為目的平台上的資源貧乏,無法執行所需要的編譯器 有時又是因為目的平台還沒有建立,連作業系統都沒有,根...