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 git2.2 安裝交叉編譯工具git clone git:
下面這些步驟如果不是有問題,例如必須要放在你的什麼資料夾下的話,建議嚴格根據來做,因為新手很有可能在設定環境變數這裡有問題
1
mkdir
rpi
2 unzip -d .
/rpi
tools-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實現樹莓派交叉編譯
一 交叉編譯 在乙個平台上生成另乙個平台上的可執行 為什麼要大費周折的進行交叉編譯呢?一句話 不得已而為之。有時是因為目的平台上不允許或不能夠安裝所需要的編譯器,而又需要這個編譯器的某些特徵 有時是因為目的平台上的資源貧乏,無法執行所需要的編譯器 有時又是因為目的平台還沒有建立,連作業系統都沒有,根...