使用buildroot建立交叉編譯工具
若想詳細地了解
buildroot
可參考該文件
首先從此處
配置項如下:
target architecture (arm)---à
target architecture variant (arm926t) --à
target abi (oabi) ---à
build option --
à此項中只作如下修改
(arm-linux-gnu) gnu build hostname suffix
其餘都是預設的選項
toolchain type (buildroot toolchain) --à
toolchain options ---à
---kernel header options
kernel headers (linux 2.6.21.x kernel headers) -à
----uclibc options
uclibc c library version (uclinbc0.9.29) -à
(toolchain/uclibc/uclibc-0.9.29.config) uclibc configuration files to
[ ] enable locale/gettext/i8n support?
thread library implementation (linux threads (stable/old))--à
[ ] thread library debugging
-----binutils options
binutils version (binutils 2.17) --à
() additional binutils options
-----gcc options
gcc compiler version (gcc 3.4.6) -à
[ ] enable setjmp /longjmp exceptions?
() additional gcc options
[ ]build/install c++ compiler and libstdc++?
[ ]build/install objective –c compiler and runtime?
[ ]build/install fortran compiler and runtime?
[*]build/install a shared libgcc?
-------ccache options
[ ]enable ccache support?
--------gdb options
[ ]build gdb debugger for the target
[ ]build gdb server for the target
[ ]build gdb for the host
---------elf2flt
未配置該選項
---------common toolchain options
未配置該選項
(-os –pipe) target optimizations
[*] include target utils in cross toolchain
package selection for the target --
àbusybox
另外編譯,這裡未配置
target options -
à[*] ext2 root filesystem
其他為預設配置
board support options ---
à[*] atmel target
其他未配置
$ make all
編譯結束後即可在
staging_dir
目錄下看到如下檔案:
arm-linux arm-linux-uclibc bin include info lib libexec man usr
其中bin
中即為相應的交叉編譯工具,
arm-linux
目錄下的
lib中即為相應的庫。
為了驗證該交叉編譯工具是否可以正常工作,修改
.bash_profile
檔案中的內容,注釋掉
export path=$path:/usr/local/arm/3.4.1/bin
新增上:
export path=$path:/home/yyl/project1/buildroot/build_arm/staging_dir/bin
重起系統,通過
arm-linux-gcc –version
命令可檢測到當前
arm-linux-gcc
版本為3.4.6
修改linux-2.6.21
目錄下的
makefile
檔案:
將cross_compile =/usr/local/arm/3.4.1/bin/arm-linux-
改為:cross_compile =/home/yyl/project1/buildroot/build_arm/staging_dir/bin/arm-linux-
由於我使用的是
at91sam9261ek板子,
其他的編譯步驟都可參考
文件linux2.6.21 kernel移植到at91sam9261ek
通過給文件的編譯步驟可以得到
uimage檔案
最後使用新生成的交叉編譯工具,編譯
busybox-1.00
,在使用
make menuconfig
命令配置選項時,只需要修改
build options
à[*] do you want to build busybox with a cross compiler?
(/home
/yyl/project1/buildroot/build_arm/staging_dir/bin/arm-linux-)
其他都採用該檔linux-2.6.20核心移植到at91rm9200-ek
製作ramdisk
的方法逐步進行,僅有如下步驟需要修改(用紅色標記),其他都不用修改:
a.c.準備
lib庫檔案
# cd /mnt
# mkdir lib
# cd
/home
/yyl/project1/buildroot/build_arm/staging_dir /arm-linux/lib
# for file in libc libcrypt libdl libm libpthread libresolv libutil
> do
> cp $file-*.so /mnt/lib
> cp -d $file.so.[*0-9] /mnt/lib
> done
# cp -d ld*.so* /mnt/lib
最後將uimage
和ramdisk.gz
通過tftp
at91sam9261ek板子,
啟動系統
,系統正常執行
,可通過這裡
linux version 2.6.21 ([email protected]) (gcc version 3.4.6)
看到gcc為3.4.6, 同時在lib目錄下可以看到uclibc
為0.9.29.
從而可以驗證該交叉編譯工具可以正常工作。到此交叉編譯工具製作完成。
使用buildroot建立自己的交叉編譯工具鏈
1.build tools gcc version 2.95 orany later g version 2.95 orany later python version 2.6or 2.7 2.dependencies packages 下面的自己根據需要安裝 ncurses5 menuconfig...
建立交叉編譯環境
這是arm linux的,還有arm elf的,不知道什麼區別.解壓 mkdir arm cd arm mv path to arm linux cross.tar.bz2 tar jxvfarm linux cross.tar.bz2 修改path gedit bashrc 新增 export p...
建立交叉編譯環境
建立交叉編譯環境 在 linux平台下,要為開發板編譯核心,圖形介面qtopia,bootloader,還有其他一些應用程式,均需要交叉編譯工具鏈。之前的系統,要使用不同的編譯器版本才能正常編譯各個部分,因此要在開發過程不斷切換設定,這十分不利於初學者使用,也降低了開發的效率 自從linux 2.6...