天天看點

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

- ** 交叉編譯是什麼,為什麼要交叉編譯**

交叉編譯: 是在一個平台上生成另一個平台上的可執行代碼。

我們再windows上面編寫C51代碼,并編譯成可執行代碼,如xx.hex,是在c51上面運作,不是在windows上面運作我們在ubuntu上面編寫樹莓派的代碼,并編譯成可執行代碼,如a.out,是在樹莓派上面運作,不是在ubuntu linux上面運作。

**編譯**:是在一個平台上生成在該平台上的可執行代碼。
           
  • 為什麼要交叉編譯

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

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

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

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

    主控端(host) :編輯和編譯程式的平台,一般是基于X86的PC機,通常也被稱為主機。

    目标機(target):使用者開發的系統,通常都是非X86平台。host編譯得到的可執行代碼在target上運作。

- 交叉編譯需要用到什麼工具

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

- 交叉編譯工具鍊的安裝

https://github.com/raspberrypi/

從共享檔案夾拷貝到你需要放的工作目錄

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

拷貝完成進行解壓

unzip tools-master.zip 
           

然後進入tools-master

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

我們要用的是arm-bcm2708,然後進入該目錄,我這台是64位的,自行選擇。

在ubuntu裡面安裝交叉編譯工具(樹莓派的)
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

該目錄底下是一大堆可執行檔案,我們要用到的是我箭頭标志的那個

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

可以看下它的版本

./arm-linux-gnueabihf-gcc -v
           
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

如果要改成執行樹莓派的代碼,使用這個編譯器,它的路徑藏得很深,使用很麻煩,怎麼能讓它可以像使用gcc這麼友善呢?接下來就是設定環境變量了。

-臨時有效

顯示環境變量

echo $PATH
           
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

顯示目前檔案夾

pwd
           
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

接下來就是配置環境變量

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/majie/testPi/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
           

export PATH=這邊先複制下圖中的路徑

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

接着:後面加入剛剛pwd的路徑

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

我們回到工作目錄發現就可以直接使用了

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

-永久有效

修改工作目錄下的.bashrc 隐藏檔案(配置指令終端的)

vi /home/majie/.bashrc
           

翻到最後一行把剛剛上面那個export PATN=……複制下來

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

然後輸入下面的指令生效一下(要根據自己的工作目錄我這邊是我自己的)

source /home/majie/.bashrc

           
  • 簡單的測試一下

    用事先ubuntu裡面的測試代碼,能否在樹莓派裡面運作

#include <stdio.h>
int main()
{
	printf("hello shumeipai\n");
	return 0;
}

           

用交叉編譯工具

檢查下交叉編譯工具對不對:

arm-linux-gnueabihf-gcc -v

           

arm-linux-gnueabihf-gcc xxx.c -o xxx

arm-linux-gnueabihf-gcc test.c  -o test_1

           
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

把test_1拷貝到樹莓派上

如何把編譯生成的可執行檔案下載下傳到開發闆:

scp clientInPi [email protected]:/home/pi

指令 檔案名 開發闆使用者名@開發闆位址:開發闆的絕對路徑

scp test_1 [email protected]:/home/pi

           
在ubuntu裡面安裝交叉編譯工具(樹莓派的)

我們再看樹莓派是否收到

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

我們來運作下

在ubuntu裡面安裝交叉編譯工具(樹莓派的)

總結

中途還是遇到很多問題的,比如安裝virtual box 的增強功能,以及剛剛傳樹莓派ip位址失敗燈小問題,百度都能解決。加油吧!!!!!!

繼續閱讀