關於交叉編譯的概述

2021-10-10 21:54:48 字數 1953 閱讀 8585

交叉編譯是在乙個平台上生成另乙個平台上的可執行**。同乙個體系結構可以執行不同的作業系統;同樣,同乙個作業系統也可以在不同的體系結構上執行。例如:在ubuntu linux 上編寫樹莓派的**,並編譯成可執行**,在樹莓派上執行,而不是在unbuntu linux 上執行。

要分清楚編譯與交叉編譯的區別,編譯是在乙個平台上生成在該平台上的可執行**。

宿主機(host):編輯和編譯程式的平台,一般是基於x86的pc機。

目標機(target):使用者開發的系統,通常都是非x86平台。host編譯得到的可執行**在target上執行。

1.目的平台上的資源缺乏,如c51,無法執行所需要的編譯器。

2.雖然樹莓派的資源較多,但是還是需要交叉編譯的,因為有時候樹莓派目的平台還沒有建立,連作業系統都還沒有,作業系統也是**,也要編譯。平台的執行至少需要兩樣東西:(1)bootloader(啟動引導**) (2)作業系統核心

unzip tools-master.zip
進入到進入到對應的bin目錄下如:

cd /home/***/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
pwd 獲取路徑

echo $path 獲得當前環境變數的值

(2)環境變數臨時有效

export path = $path: /home/***/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

(3)環境變數永久有效

修改工作目錄下的隱藏檔案.bashrc

vi /home/***/.bashrc

在檔案的最後一行加入以下**儲存退出:

export path = $path:

/home/***/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

載入配置檔案,馬上生效

source /home/***/

.bashrc

樹莓派已經是網路登入,比較快速的方法使用scp指令

scp 檔名 開發板使用者名稱@開發板ip位址:開發板的絕對路徑
1.正常情況,先要交叉編譯wiringpi庫,編譯出的庫要適合樹莓派,才能使用arm-linux-gnueabihf-gcc 編譯工具編譯成功,否則會出現如下:

collect2: error: ld returned 1 exit status

需要注意的問題:通過 -i -l 來指定標頭檔案和符合樹莓派的庫

-i(大寫i):指定標頭檔案的路徑

-l: 指定庫的路徑

軟鏈結檔案有類似於windows的快捷方式。

在符號連線中,檔案實際上是乙個文字檔案,其中包含的有另一檔案的位置資訊。

你選定的位置上生成乙個檔案的映象,不會占用磁碟空間

軟鏈結的生成:

ln -s 要被鏈結的檔案 軟鏈結的檔名

如:ln -s libwiringpi.so.2.50 libwiringpi.so

生成如下圖

硬鏈結的概述:

1.它會在你選定的位置上生成乙個和原始檔大小相同的檔案

2.允許乙個檔案擁有多個有效路徑名,這樣使用者就可以建立硬連線到重要檔案,以防止「誤刪」的功能

軟鏈結的生成:

ln 要被鏈結的檔案 軟鏈結的檔名

如:ln libwiringpi.so.2.50 libwiringpi.so

注意,無論是軟鏈結還是硬鏈結,檔案都保持同步變化。

交叉編譯概述

交叉編譯 是在乙個平台上生成另乙個平台上的可執行 例如 我們在windows上面編寫c51 並編譯成可執行 如xx.hex,是在c51上面執行,不是在windows上面執行。再例如 我們在ubuntu上面編寫樹莓派的 並編譯成可執行 如a.out,是在樹莓派上面執行,不是在ubuntu,linux上...

關於交叉編譯

關於交叉編譯 交叉編譯通俗地講就是在一種平台上編譯出能執行在體系結構不同的另一種平台上,比 如在我們地pc平台 x86 cpu 上編譯出能執行在sparc cpu平台上的程式,編譯得到的程式在x86 cpu平台上是不能執行的,必須放到sparc cpu平台上才能執行。當然兩個平台用的都是linux ...

關於Gdb工具的交叉編譯 移植

總結為了在arm linux處理器上捕捉程式異常,除錯程式,需使用gdb工具,需要將gdb原始碼使用交叉編譯工具編譯成為可在arm處理器上執行的格式。需要的工具為交叉編譯工具鏈arm none linux gnueabi gcc 本人使用的是4.3.2版本交叉工具鏈。編譯中需要的依賴庫有termca...