1.1 下載交叉編譯器源碼包
到谷歌上搜索buildroot,直接到官網上下載源碼包即可。
1.2上傳源碼包到linux服務器
從windows上傳源碼包到linux可以採用三種方法:
1.使用FTP服務器;
2.使用RZ命令;
3.使用第三方軟件winscp;
使用cd命令切換到/opt目錄下,linux安裝第三方軟件建議都安裝在/opt目錄下。
[Reagan@localhost opt]$ wget ftp://iot-yun.zicp.net/linux_tools/buildroot-2012.08-LingYunEmbLab-v1.3.0.bin
修改/opt目錄的權限,因爲默認情況下/opt目錄只有root纔有寫的權限,所以先執行sudo chmod 777 /opt/
[Reagan@localhost ~]$ sudo chmod 777 /opt/
[Reagan@localhost opt]$ chmod a+x buildroot-2012.08-LingYunEmbLab-v1.3.0.bin
[Reagan@localhost opt]$ echo $PATH
[Reagan@localhost opt]$ ./buildroot-2012.08-LingYunEmbLab-v1.3.0.bin
第二章 配置交叉編譯器選項
2.1配置交叉編譯器的cpu類型
這裏要注意的是:在Target Archtecture Variant選項中,我們是根據開發板的CPU來選擇的。這裏s3c2440的CPU是ARM920t,以後不一定使用s3c2440這個CPU,大家要根據具體情況而定。
2.2 配置build option選項
此處9texinfo沒有 所以要使用yum install下載
------------------------------------------------------------------------------------------
郭工文檔
------------------------------------------------------------------------------------------
[guowenxue@centos6 opt]$ cd buildroot-2012.08
[guowenxue@centos6 buildroot-2012.08]$ ls
board CHANGES configs dl fs Makefile support toolchain
boot Config.in COPYING docs linux package target
3,開始配置編譯安裝:
[guowenxue@centos6 buildroot-2012.08]$ export TERM=vt100 防止make menuconfig出現亂碼
[guowenxue@centos6 buildroot-2012.08]$ make menuconfig 進行builroot配置
[guowenxue@centos6 buildroot-2012.08]$ make
編譯的過程中可能會提示缺少某些命令(譬如g++,makeinfo,ncurses),這時就使用yum或rpm命令安裝缺少的相應rpm包。
buildroot-2012.08 make menuconfig 選項配置說明
=======================
Target Architecture (ARM (little endian)) --->
Target Architecture Variant (arm920t) ---> 根據自己的CPU來選擇
Target ABI (EABI) --->
Build options --->
($(TOPDIR)/dl) Download dir
($(TOPDIR)/arm920t) Host dir
[*] prefer static libraries
其它選項都不要選,如果是要設置值的地方就使用默認值
Toolchain --->
Kernel Headers (Linux 2.6 (manually specified version)) --->
(2.6.37) linux version 選定內核版本爲2.6.37
... ...
[*] Enable compiler tls support
[*] Enable MMU support
[*] Use software floating point by default
[*] Enable large file (files > 2 GB) support
[*] Enable IPv6 support
[*] Enable RPC support
[*] Enable WCHAR support
[*] Enable C++ support
其它選項都不要選,如果是要設置值的地方就使用默認值
System configuration --->
Init system (None) ---> 把Busbyox編譯去掉
這裏面所有的都不要選,如果是要設置值的地方就使用默認值
Package Selection for the target --->
這裏面所有的選項都不要選,除了:
Libraries --->
Compression and decompression --->
[*] lzo
-*- zlib
Host utilities --->
這裏面所有的選項都不要選
Filesystem images --->
這裏面所有的選項都不要選
Bootloaders --->
這裏面所有的選項都不要選
Kernel ---
這裏面所有的選項都不要選
編譯完成成功最後結果說明:
=======================
... ... ...
touch /apps/buildroot-2012.08/output/target/etc/ld.so.conf
mkdir -p /apps/buildroot-2012.08/output/target/var/cache/ldconfig
if [ -x "/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig" ]; \
then \
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig -r /apps/buildroot-2012.08/output/target; \
else \
/sbin/ldconfig -r /apps/buildroot-2012.08/output/target; \
fi
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: /usr/lib/libstdc++.so.6.0.14-gdb.py is not a shared library, skipping
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: can't resolve /usr/X11R6/lib in chroot .: No such file or directory
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: skipping /usr/X11R6/lib: No such file or directory
( \
echo "NAME=Buildroot"; \
echo "VERSION=2012.08"; \
echo "ID=buildroot"; \
echo "VERSION_ID=2012.08"; \
echo "PRETTY_NAME=\"Buildroot 2012.08\"" \
) > /apps/buildroot-2012.08/output/target/etc/os-release
[guowenxue@centos6 buildroot-2012.08]$
[guowenxue@centos6 buildroot-2012.08]$ ls arm920t/usr/bin/
這時應該可以看到編譯出來的交叉編譯器工具鏈
[guowenxue@centos6 buildroot-2012.08]$ ls
board CHANGES configs dl fs Makefile support toolchain
boot Config.in COPYING docs linux package target
3,開始配置編譯安裝:
[guowenxue@centos6 buildroot-2012.08]$ export TERM=vt100 防止make menuconfig出現亂碼
[guowenxue@centos6 buildroot-2012.08]$ make menuconfig 進行builroot配置
[guowenxue@centos6 buildroot-2012.08]$ make
編譯的過程中可能會提示缺少某些命令(譬如g++,makeinfo,ncurses),這時就使用yum或rpm命令安裝缺少的相應rpm包。
buildroot-2012.08 make menuconfig 選項配置說明
=======================
Target Architecture (ARM (little endian)) --->
Target Architecture Variant (arm920t) ---> 根據自己的CPU來選擇
Target ABI (EABI) --->
Build options --->
($(TOPDIR)/dl) Download dir
($(TOPDIR)/arm920t) Host dir
[*] prefer static libraries
其它選項都不要選,如果是要設置值的地方就使用默認值
Toolchain --->
Kernel Headers (Linux 2.6 (manually specified version)) --->
(2.6.37) linux version 選定內核版本爲2.6.37
... ...
[*] Enable compiler tls support
[*] Enable MMU support
[*] Use software floating point by default
[*] Enable large file (files > 2 GB) support
[*] Enable IPv6 support
[*] Enable RPC support
[*] Enable WCHAR support
[*] Enable C++ support
其它選項都不要選,如果是要設置值的地方就使用默認值
System configuration --->
Init system (None) ---> 把Busbyox編譯去掉
這裏面所有的都不要選,如果是要設置值的地方就使用默認值
Package Selection for the target --->
這裏面所有的選項都不要選,除了:
Libraries --->
Compression and decompression --->
[*] lzo
-*- zlib
Host utilities --->
這裏面所有的選項都不要選
Filesystem images --->
這裏面所有的選項都不要選
Bootloaders --->
這裏面所有的選項都不要選
Kernel ---
這裏面所有的選項都不要選
編譯完成成功最後結果說明:
=======================
... ... ...
touch /apps/buildroot-2012.08/output/target/etc/ld.so.conf
mkdir -p /apps/buildroot-2012.08/output/target/var/cache/ldconfig
if [ -x "/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig" ]; \
then \
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig -r /apps/buildroot-2012.08/output/target; \
else \
/sbin/ldconfig -r /apps/buildroot-2012.08/output/target; \
fi
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: /usr/lib/libstdc++.so.6.0.14-gdb.py is not a shared library, skipping
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: can't resolve /usr/X11R6/lib in chroot .: No such file or directory
/apps/buildroot-2012.08/arm920t/usr/bin/arm-unknown-linux-uclibcgnueabi-ldconfig: skipping /usr/X11R6/lib: No such file or directory
( \
echo "NAME=Buildroot"; \
echo "VERSION=2012.08"; \
echo "ID=buildroot"; \
echo "VERSION_ID=2012.08"; \
echo "PRETTY_NAME=\"Buildroot 2012.08\"" \
) > /apps/buildroot-2012.08/output/target/etc/os-release
[guowenxue@centos6 buildroot-2012.08]$
[guowenxue@centos6 buildroot-2012.08]$ ls arm920t/usr/bin/
這時應該可以看到編譯出來的交叉編譯器工具鏈
第三章 配置交叉編譯器出現的錯誤
(1)先用wget ftp://iot-yun.zicp.net/linux_tools/buildroot-2012.08-LingYunEmbLab-v1.3.0.bin直接把.bin文件下載到/opt/沒運行出東西。後來把buildroot-2012.08-LingYunEmbLab-v1.3.0.bin下載到PC上,再用RZ下載下來就可以。
(2)maek時候
mkdir: 無法創建目錄“/arm920t”:權限不夠
make: ***[/arm920t/user/arm-unknown-linux-uclibcgnueabi/sysroot] 錯誤 1
解決辦法:sudo make