文章目錄
- 1、交叉編譯的概念
- 2、樹莓派的交叉編譯
-
- 2.1、交叉編譯工具的下載下傳
- 2.2、交叉編譯工具導入環境變量
- 2.3、帶WiringPi的交叉編譯
1、交叉編譯的概念
交叉編譯是指在一個平台上編譯出能夠運作在另一個平台運作的程式,這個過程叫做交叉編譯。例如,Window Intel平台編譯出運作于Linux ARM平台的程式。要能夠實作交叉編譯,需要交叉編譯工具,或者叫做交叉編譯工具鍊。
為什麼需要交叉編譯?
1、目标平台的空間不夠,無法安裝編譯器。
2、有時候目标平台即使硬體資源豐富支援安裝編譯器,但是上面沒有作業系統,更談不上編譯。是以也需要提前交叉編譯好作業系統給到目标平台上。
2、樹莓派的交叉編譯
2.1、交叉編譯工具的下載下傳
https://github.com/raspberrypi
到這個tools下下載下傳交叉編譯工具。
2.2、交叉編譯工具導入環境變量
1、将下載下傳好的交叉編譯工具鍊通過共享檔案夾拷貝到虛拟機上并解壓
2、将交叉編譯工具鍊的路徑導入到環境變量
例如我這裡是:
cd /home/CLC/Raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
如果是希望臨時有效,可以通過export指令添加環境變量
export PATH=$PATH:/home/CLC/Raspberry/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
如果希望為目前使用者永久生效,則可以修改.bashrc檔案
vi ~/.bashrc
末尾添加export内容
輸入
source ~/.bashrc
生效
最後輸入指令,檢視交叉編譯工具鍊版本号,如果有列印版本号資訊,則代表交叉編譯工具鍊導入成功。
arm-linux-gnueabihf-gcc -v
2.3、帶WiringPi的交叉編譯
如果要在虛拟機下實作帶WiringPi庫的編譯,其中一個方法就是把樹莓派的wiringpi庫放到虛拟機下。
樹莓派wiringpi庫在
/usr/lib
下。
第一步:通過scp指令将so檔案上傳到虛拟機。
第二步:下載下傳WiringPi庫檔案到虛拟機,裡面會包含一些WiringPi的頭檔案聲明。
例如我的是這樣:
WiringPi頭檔案聲明路徑:
.so的路徑:
是以,編譯的時候,需要指定.so的路徑和頭檔案的路徑。
參考指令如下:
arm-linux-gnueabihf-gcc gpio_relay.c -o gpio_relay -I ../WiringPi/WiringPi/ -L .. -lwiringPi
生成的可執行檔案便可以在樹莓派上運作。