1.首先獲取交叉編譯器
可以是沒(méi)有編譯的源碼,也可以是制作好的。下面列出了下載地址:
http://www.codesourcery.com/sgpp/lite/arm/portal/subscription?@template=lite
在顯示的表格中,
Download Sourcery G++ Lite Edition for ARM
GNU/Linux All versions… 項列出的是目標系統為linux的所有版本的編譯器
點(diǎn)擊進(jìn)入 All versions… 列出所有版本的編譯器
選擇Sourcery G++ Lite 2009q1-203 顯示如下圖:

其中 IA32 GNU/Linux TAR 是制作好的編譯器,Source TAR是源碼,我們下載制作好的編譯器,同時(shí)還得下載datasheet和用戶(hù)手冊(started Guide(pdf))
注:datasheet 是介紹Gcc和Glibc的版本號,用戶(hù)手冊是介紹怎么使用。
點(diǎn)擊IA32 GNU/Linux TAR 則下載名為:
arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2的壓縮文件
2.配置編譯器
1)解壓剛下載的壓縮文件
命令:tar –jvxf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2
則產(chǎn)生一個(gè)arm-2009q1目錄,進(jìn)入目錄。
編譯器二進(jìn)制文件全在/bin目錄下面。
2)編譯器參數設置
該編譯器支持三種版本的cpu,分別是armv4t、armv5t和armv7t。默認支持的是armv5t的cpu。由于本人的開(kāi)發(fā)板是tq2440.屬于armv4t的cpu。所以在編譯的時(shí)候需要設置相應的參數。對應的命令是:為了方便采用tq手冊中的方法。在/bin目錄下面建立若干個(gè)可執行腳本,分別命名為:arm-linux-xxx(xxx代表的就是同目錄下的arm-none-linux-gnueabi-xxx中的xxx) 然后在腳本文件中添加如下內容:
!#/bin/sh
exec arm-none-linux-gnueabi-xxx -march=armv4t $*(手冊上漏寫(xiě)了exec ,這讓我痛苦額很久)
注意:實(shí)際上只要對gcc gcc-4.3.3 和g++這三個(gè)制作可執行腳本就可以了。而針對其他的使用命令:ln -s arm-none-linux-gnueabi-xxx arm-linux-xxx 做成鏈接指向對應的編譯器就可以了。
然后我們需要高明白兩件事情:
1、 我們所需要使用的交叉編譯器的庫(lib)的路徑是:arm-none-linux-gnueabi/libc/armv4t/lib/目錄下的,我們制作文件系統是就是使用該目錄下的庫;
2、 我們所需要使用的頭文件在arm-none-linux-gnueabi/libc/usr/include/目錄下的。
然后我們添加編譯QT所必須的庫:jpegser.v6.tar.gz、libpng、libz和libuuid(e2fprogs),我們在一直好這些庫之后,需要將其拷貝到前面提到的目錄中(包括lib和include)。
如果以后遇到某程序需要的庫,自行編譯后添加到編譯器中就可以了。到此適合我們的交叉編譯器的初步制作算是結束了,然后我們可以將其打包備份。
3)環(huán)境變量配置
我們需要的交叉編譯器配置成功后,我們需要做一件事就是讓我們的編譯器處處可以用。這就需要多我們的環(huán)境變量進(jìn)行配置了。用vi或gedit打開(kāi).bash_profile文件
在PATH變量中加入如下路徑:/home/arm-cross/arm-2009q1/bin
我的編譯器是放在/home/arm-cross/目錄下的。
重啟環(huán)境變量或重啟計算機就好了。
如此:自己制作的編譯器就制作成功了。當要注意的一定,這個(gè)編譯支持EABI技術(shù)的,所以要求編譯的目標內核也要支持這個(gè)技術(shù),linux2.6.16以后的內核都支持了。之前的交叉編譯器不支持EABI技術(shù)。
聯(lián)系客服