樹莓派之交叉編譯

2021-07-26 21:22:54 字數 2196 閱讀 8630

1 為什麼要使用交叉編譯

交叉編譯工具較快開發的速度。樹莓派中已經安裝了gcc工具鏈,可在樹莓派中直接編譯源**生成可執行檔案。於此同時,pc機上也可使用gcc工具鏈生成可執行**,但是和樹莓派上的gcc工具不同,pc機上的gcc工具生成intel或amd晶元上可執行的**,但樹莓派卻是arm系列的晶元,顯然存在不小的差異。那麼使用交叉工具鏈便可在pc機上開發樹莓派中可執行程式。

雖然樹莓派的主頻可達700mhz遠高於一般的嵌入式系統,但相比於pc機其效能還是差些,使用交叉工具鏈可節約開發時間。在編譯鏈結同等規模的**時,pc機所用的時間應少於樹莓派所用時間,通過交叉編譯的方法提高效率

2在樹莓派交叉編譯

環境:ubuntu9.10(32bit)樹莓派3b 安裝2017-1-17 raspbian-jessie

2.1 使用交叉編譯工具

交叉編譯工具是針對執行二進位制檔案的平台而選擇,對於樹莓派有專門的交叉編譯工具:

sudo apt-get install build-essential git

git clone git:

2.2 安裝交叉編譯工具

下面這些步驟如果不是有問題,例如必須要放在你的什麼資料夾下的話,建議嚴格根據來做,因為新手很有可能在設定環境變數這裡有問題

1

mkdirrpi

2 unzip -d ./rpitools-master.zi

p對於32位的ubuntu,使用gcc-linaro-arm-linux-gnueabihf-raspbian,對於64位的使用gcc-linaro-arm-linux-gnueabihf-raspbian-x64.在此選擇64位上的交叉編譯工具.

2.3新增環境變數

要使用交叉編譯工具需要新增環境變數.環境變數簡單的說就是指定程式的路徑,使程式在終端可以直接執行.比如執行ls指令不需要/bin/ls是因為這個路徑已經新增到了環境變數path路徑.關於環境變數可以參考前面我寫過的修改變數的方法

檢視環境變數可以用:

1

echo$path

會輸出所有的環境變數,各個環境變數之間用:分開

export path=$path:/home/book/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin 這個句子的意思是新增環境變數

/home/book/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin  你必須要在這個目錄下面看到arm-linux-gnueabihf-gcc-4.8.3這個可執行檔案

重啟使環境變數立即生效

2.4測試

輸入  arm-linux-gnueabihf-gcc-4.8.3 -v 如果設定環境變數成功的話,執行這個命令會輸出相關的版本資訊 而不是command not found

假如出現permittion denied 的話 可以sudo chmod 777 需要修改許可權的資料夾或者檔案 如果直接sudo 是不行的,必須要修改許可權

2.5 使用交叉編譯生成可執行檔案

在linux虛擬機器下編寫檔案 hello.c

#include

int main()

arm-linux-gnueabihf-gcc-4.8.3 hello.c -o hello 和gcc實際上是差不多的,只不過現在使用的工具是arm-linux-gnueabihf-gcc-4.8.3

利用ftp工具將生成的hello可執行檔案傳送到樹莓派上

sudo chmod 777 hello 修改檔案許可權

./hello

解壓tar zvxf eclipse-jee-juno-sr2-linux-gtk-x86_64.tar.gz

在/eclipse目錄下找到可執行檔案eclipse 執行命令./eclipse啟動程式

樹莓派 交叉編譯

1 編譯 例如在linux上進行gcc直接編譯,編譯出來的可執行檔案是在本機能夠執行 2 交叉編譯 下位機,如c51,stm32,若沒有足夠內存放編輯器,需要上位機進行跨機編譯來生成可執行檔案的,就是交叉編譯。需要交叉編譯的原因 由於本人嘗試的是樹莓派的交叉編譯,所以使用的工具是 gcc linar...

樹莓派核心模組交叉編譯

一 獲得arm gcc 交叉編譯器 安裝該編譯器,把編譯器路徑加入到環境變數中 gedit bashrc在最後一行新增 export path path your dir tools master arm bcm2708 arm bcm2708hardfp linux gnueabi bin 然後終...

Ubuntu實現樹莓派交叉編譯

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