(一)交叉編譯器簡介
在一種計算機環境中執行的編譯程式,能編譯出在另外一種環境下執行的**,這個編譯過程就叫交叉編譯.簡單地說,就是在乙個平台上生成另乙個平台上的可執行**.
(二)體系結構與作業系統
(1)常見的體系結構有arm結構、x86結構等.
(2)常見的作業系統有linux,windows等.
(3)同乙個體系結構可以執行不同作業系統,如x86上可以執行linux、windows等,在arm上可以執行linux、wince.
(4)同乙個作業系統可以在不同的體系結構上執行,比如linux可以執行在x86上,也可以執行在arm上.
(5)同樣的程式不可能執行在多個平台上,比如windows下應用程式不能在linux下執行.如果乙個應用程式想在另乙個平台上執行,必須使用針對該平台的編譯器,來重新編譯該應用程式的二進位制**.
比如在linux系統下執行windows平台的qq軟體,必須按照以下幾個步驟:
1.qq程式源**
2.使用linux下的編譯器來編譯qq軟體的源**
這樣編譯出來的可執行程式就可以在linux下執行了.所以,如何使arm來執行使用者的應用程式呢,就需要用到針對arm的編譯器來編譯程式.
(三)使用交叉編譯器的原因
要進行交叉編譯,使用者需要在主機平台上安裝對應的交叉編譯工具鏈(cross compilation tool chain),然後用這個交叉編譯工具鏈編譯使用者的源**,最終生成可在目標平台上執行的**.
(1)cross -2.95.3 tar: 該版本較早,除了編譯vivi外一般不使用.
(2)arm920t-eabi.tgz: 4.1.2版本的編譯器,支援eabi,可以編譯tx2440a開發板上的所有程式.
(3)arm-linux-gcc: 4.3.2版本的編譯器,支援eabi,是最常見的交叉工具鏈.
attention!!!
(四)安裝交叉工具鏈arm-linux-gcc 4.3.2
安裝交叉編譯器arm-linux-gcc就是在主機平台(pc機的linux作業系統)上安裝對應的交叉編譯工具鏈,換句話說,是將交叉編譯器arm-linux-gcc 4.3.2在linux作業系統下安裝.安裝步驟:
(1)啟動samba伺服器,開啟共享目錄/home/lishuai,
將壓縮檔案arm-linux-gcc-4.3.2.tgz複製到/home/lishuai下.
(2)解壓軟體包arm-linux-gcc-4.3.2.tgz.
[root@localhost lishuai]#tar xzvf arm-linux-gcc4.3.2.tgz
1.目錄4.3.2就是該交叉編譯器的目錄.
從arm-linux-gcc-4.3.2.tgz解壓資訊來看,該軟體包需要解壓在usr/local/arm下,而實際卻解壓到了共享目錄/home/lishuai下
2.進入目錄usr/local/內,並沒有找到arm資料夾,所以需要新建一arm資料夾,再將目錄4.3.2移動到新建目錄usr/local/arm下.其中,4.3.2/bin就是arm-linux-gcc的可執行檔案.
[root@localhost local]#mv /home/lishuai/usr/local/arm/4.3.2 ./
3.進入目錄/usr/local/arm/4.3.2/bin,可以看到不同型別的編譯器.但在arm下經常用到是arm-linux-gcc.其實它也是乙個gcc編譯器,與gcc使用方法一致,不過該編譯器是針對arm體系結構、linux作業系統的編譯器.利用該編譯器就可以編譯出執行在arm上的linux作業系統下的應用程式.
4.進入目錄/usr/local/arm/4.3.2/arm-none-linux-gnueabi.
其中,lib目錄下存放的是庫檔案,使用者編寫的應用程式在執行時就依賴於這些庫檔案.
5.此時還不能編譯原始碼,
系統一般會提示找不到命令arm-linux-gcc.這是環境變數在作祟.所以必須修改環境變數path.
[root@localhost lishuai]#vi /etc/profile
在"export path user logname mail hostname histsize inputrc"這一行的下面新增環境變數,
輸入:export path=/usr/local/arm/4.3.2/bin:$path
指定變數path為交叉編譯器的路徑,目的是告訴作業系統可以到目錄/usr/local/arm/4.3.2/bin下查詢可執行檔案
6.[root@localhost lishuai#:source /etc/profile
//使已修改的配置檔案/etc/profile生效
7.檢視arm-linux-gcc編譯器的版本
[root@localhost lishuai]#arm-linux-gcc -v
(五)arm-linu-gcc應用例項
例項:如何使用交叉編譯器編譯原始碼包boa-0.94.13.tar.tar
1. 啟動smb伺服器,將原始碼包放在共享資料夾/home/lishuai下
2. 輸入命令: tar xzvf boa-0.94.13.tar.tar
//解壓該原始碼包
//一般的原始碼包內有makefile檔案,執行make就可以編譯,但該原始碼包內沒有,此時執行make是無效的
//仍然沒有makefile,但找到了configure檔案,通過執行configure檔案可以生成makefile
[root@localhost lishuai]# ./configure
//執行configure檔案,生成了makefile檔案
//由於要編譯出在arm平台上的程式,就需要使用交叉編譯器.在makefile檔案內的綠色大寫字母都是makefile變數,可以看到變數cflags = -g -o2 -pipe -wall -l,該變數是設定編譯選項;變數cc = gcc,該變數是設定需要使用的編譯器.由於要使用
交叉編譯器arm-linux-gcc,所以該變數應設定為cc = arm-linux-gcc,cpp = arm-linux-gcc -e,儲存並退出.
[root@localhost lishuai]#make
交叉編譯器
交叉編譯器可以使我們在主機上編譯出可以在嵌入式裝置上執行的程式 install gcc aarch64 linux gnu 安裝64位用於作業系統的交叉編譯器,gcc版本是5.4,安裝位置在 usr bin sudo apt get install gcc arm linux gnueabihf 安...
ubuntu安裝交叉編譯器 安裝交叉編譯器
2 安裝方法二 1 安裝方法一 開啟ubuntu終端 使用sudo apt list gcc arm 可以檢視所有的交叉編譯器,假設安裝gcc arm linux gnueabihf,則使用sudo apt get install gcc arm linux gnueabihf就裝好了。參考 2 安...
arm linux交叉編譯器
本文出自 http embdev.gotdns.org 版本選者在linux裡面是非常重要的,沒有windows一樣有效的管理,建議選者文中的版本。否則出現錯誤的概率很高,所有的版本區別請參考各位庫的官方主頁。雖然網上有現成的工具,但是,一步步的製作下來可以讓新手理解一下linux各個庫的關係,以及...