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