分类: LINUX
2013-12-20 16:42:13
原文地址:使用buildroot建立交叉编译工具 作者:piaoyizu
若想详细地了解buildroot可参考该文档
首先从此处 下载最新的buildroot
$ tar jxvf buildroot-snapshot.tar.bz2
$ cd buildroot
$ make menuconfig
配置项如下: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
----uClibc Options
uClibc C library version
(uClinbc
(toolchain/uClibc/uClibc-
[ ] 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
[ ] 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/
export PATH=$PATH:/home/yyl/project1/buildroot/build_arm/staging_dir/bin
重起系统,通过arm-linux-gcc
–version命令可检测到当前arm-linux-gcc版本为
修改linux-
将 CROSS_COMPILE
=/usr/local/arm/
改为:CROSS_COMPILE
=/home/yyl/project1/buildroot/build_arm/staging_dir/bin/arm-linux-
由于我使用的是AT91SAM9261EK板子,其他的编译步骤都可参考 文档linux
通过给文档的编译步骤可以得到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-
制作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
若想详细地了解buildroot可参考该文档
首先从此处 下载最新的buildroot
$ tar jxvf buildroot-snapshot.tar.bz2
$ cd buildroot
$ make menuconfig
配置项如下: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
----uClibc Options
uClibc C library version
(uClinbc
(toolchain/uClibc/uClibc-
[ ] 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
[ ] 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/
export PATH=$PATH:/home/yyl/project1/buildroot/build_arm/staging_dir/bin
重起系统,通过arm-linux-gcc
–version命令可检测到当前arm-linux-gcc版本为
修改linux-
将 CROSS_COMPILE
=/usr/local/arm/
改为:CROSS_COMPILE
=/home/yyl/project1/buildroot/build_arm/staging_dir/bin/arm-linux-
由于我使用的是AT91SAM9261EK板子,其他的编译步骤都可参考 文档linux
通过给文档的编译步骤可以得到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-
制作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