2440學習(三) 搭建交叉編譯環境

2021-06-09 23:43:29 字數 1854 閱讀 5785

從nfs啟動竟然花了兩天時間,即可開始搭建交叉編譯環境

一 .安裝編譯工具

完全按照這個做就行:

1 把arm-linux-gcc-4.3.2.tgz 拷貝任意的目錄下,進入這個資料夾

$ sudo tar xvzf arm-linux-gcc-4.3.2.tgz -c /

注意直接貼上到ubuntu下時,有些字元會變,最好自己敲寫

執行該命令,將把 arm-linux-gcc 安裝到/usr/loca/arm/4.3.2 目錄。

2 . 修改環境變數,把交叉編譯器的路徑加入到path。

修改/etc/bash.bashrc檔案(此檔案只對當前使用者適用)

$sudo gedit /etc/bash.bashrc

在最後加上export path=$path:/usr/local/arm/4.3.2/bin

3 .立即使新的環境變數生效,不用重啟電腦:

$ source /root/.bashrc

4. 檢查是否將路徑加入到path:

$ echo $path

5. 測試是否安裝成功

$ arm-linux-gcc -v

6 ..編譯hello world程式,測試交叉工具鏈

寫下下面的hello world程式,儲存為hello.c

int main()

執行下面的命令:

$ arm-linux-gcc -o hello hello.c

ok 一切順利,開始編譯kernel

二 . kernel編譯

按照開發板文件操作

(1).將原始碼包拷貝到/tmp/linux/linux-2.6.29-mini2440-20090331.tgz

(2)解壓安裝linux 核心源**

在工作目錄/opt/friendlyarm/mini2440 中執行:

#cd /opt/friendlyarm/mini2440

#tar xvzf /tmp/linux/linux-2.6.29-mini2440-20090331.tgz

(3)配置編譯檔案 

#cd /opt/friendlyarm/mini2440/linux-2.6.29

#cp config_mini2440_t35 .config

配置核心

# make menuconfig

選擇load an alternate configuration file

(4)編譯 zimage

#make zimage

提示缺少ncurses-deve,安裝之

sudo apt-get install libncurses5-dev

(5) 製作uimage

目標檔案目錄/arch/arm/boot下,生成了image 和zimage

# mkimage -a arm -o linux -t kernel -c none -a 30008000 -e 30008040 -n linux-2.6.32.2 -d zimage uimage

生成uimage

mkimage 需要安裝:apt-get install uboot-mkimage

copy uimage到nfs,上電載入---------非常順利!

附:zimage和uimage的區別

zimage是arm linux常用的一種壓縮映像檔案,uimage是u-boot專用的映像檔案,它是在zimage之前加上乙個長度為0x40的「頭」,說明這個映像檔案的型別、載入位置、生成時間、大小等資訊。換句話說,如果直接從uimage的0x40位置開始執行,zimage和uimage沒有任何區別。

mkimage引數說明

搭建交叉編譯環境

2008.03.12 今天計畫 完成交叉環境的搭建 今天進展 今天心得 1.vi命令,熟悉h,j,k,l命令,其中重要的一點g是將游標跳到文件末尾,此命令對於在一大型文件中繼續編寫很有用。l是將游標移到螢幕最後行。2.修改arm elf tools 20040427.sh 由於直接執行 sh arm...

搭建交叉編譯環境

4.1 搭建交叉編譯環境 4.1.1 概述 交叉編譯,就是用執行在一種計算機環境中的編譯程式,去編譯出在另外一種環境下執行的 具有這種能力的編譯器就叫交叉編譯器。換而言之,就是在乙個平台上生成另乙個平台上的可執行 這裡所指的平台實際上包含了軟 硬體兩個方面的概念 作業系統 operating sys...

搭建交叉編譯環境

2.解壓交叉編譯工具到指定的目錄下 usr local arm tar xvf arm linux gcc 4.4.3 20100728.tar.gz c usr local arm 3.配置系統環境變數 etc profile 所有使用者都可用 etc bash.bashrc 所有使用者都可用 r...