制作文件系统 BusyBox的交叉编译
2015-07-12 08:07
459 查看
[日期:2011-12-21] 来源:Linux社区 作者:npy_lp
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-12/49878p2.htm
开发平台:Ubuntu11.04
目 标板:ARM体系结构
编 译器:arm-gcc-4.1.1.tar.bz2 (可从 http://www.linuxidc.com/Linux/2011-11/47824.htm 上下载)
源代码:busybox-1.19.2.tar.bz2(可从 http://www.linuxidc.com/Linux/2011-08/40704.htm 上下载)
BusyBox - The Swiss Army Knife of EmbeddedLinux.
BusyBox 是一个集成了一百多个常用Linux命令和工具的应用程序。它不仅包含了一些简单的命令,如 cat 、echo和ls等,而且还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet等。简单地说,BusyBox就好像是个大工具箱,集成了许多Linux常用的工具和命令。
BusyBox最初是由Bruce Perens在1996年为DebianGNU/Linux安装盘而编写的。
1、交叉编译BusyBox的默认配置
$ tar jvxf busybox-1.19.2.tar.bz2
$ cd busybox-1.19.2/
$ make defconfig //通过执行make help获得帮助
设置交叉编译工具链前缀:
$ make menuconfig
Busybox Settings --->
Build Options --->
() Cross Compiler prefix
回车,在弹出的界面中输入交叉编译工具链的前缀:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/793c253e88441086f08cd30e82abbc45)
使用arm-gcc-4.1.1.tar.bz2编译时会发生缺少头文件ubi-user.h的错误:
miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directory
miscutils/ubi_tools.c: In function 'ubi_tools_main':
miscutils/ubi_tools.c:133: error: 'UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:133: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:133: error: for each function it appears in.)
miscutils/ubi_tools.c:134: error: 'UBI_VOL_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:153: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:161: error: 'UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:153: warning: unused variable 'req'
miscutils/ubi_tools.c:167: error: 'UBI_IOCDET' undeclared (first use in this function)
miscutils/ubi_tools.c:170: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:177: error: 'UBI_MAX_VOLUME_NAME' undeclared (first use in this function)
miscutils/ubi_tools.c:184: error: 'UBI_STATIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:186: error: 'UBI_DYNAMIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:195: error: 'UBI_IOCMKVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:170: warning: unused variable 'req'
miscutils/ubi_tools.c:201: error: 'UBI_IOCRMVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:214: error: 'UBI_IOCRSVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: warning: unused variable 'req'
miscutils/ubi_tools.c:222: error: 'UBI_IOCVOLUP' undeclared (first use in this function)
make[1]: *** [miscutils/ubi_tools.o] Error 1
make: *** [miscutils] Error 2
解决这个问题的方法是从linux-2.6.38.8内核源码的include/mtd/目录下拷贝头文件ubi-user.h到4.1.1/arm-linux-gnu/include/mtd/目录:
$ cd $HOME/4.1.1/arm-linux-gnu/include
$ mkdir mtd
$ cp linux-2.6.38.8/include/mtd/ubi-user.h mtd/
执行make和make install即可编译和安装:
$ make
$ make install //默认安装在当前目录的_install目录下。
2、根据项目需要适当裁减
(1)、跟Linux内核类似,BusyBox也可以通过执行make menuconfig命令启动基于ncurses的配置界面,配置界面的操作方法如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202006/01/a65079b4cd8124e88613d7929c4a93cd)
BusyBox中并没有尖括号(< >)的选项,也不会被编译成模块。
(2)、BusyBox将所有配置进行了分类,可以很方便地根据项目的需要进行裁减。
Busybox Settings ---> //BusyBox的通用配置,一般采用默认值即可。
---Applets
Archival Utilities ---> //压缩、解压缩相关工具。
Coreutils ---> //最基本的命令,如cat、cp、ls等。
Console Utilities ---> //控制台相关命令。
Debian Utilities ---> //Debian操作���统相关命令。
Editors ---> //编辑工具,如vi、awk、sed等。
Finding Utilities ---> //查找工具,如find、grep、xargs。
Init Utilities ---> //BusyBox init相关命令。
Login/Password Management Utilities ---> //登陆、用户账号/密码等方面的命令。
Linux Ext2 FS Progs ---> //ext2文件系统的一些工具。
Linux Module Utilities ---> //加载/卸载模块等相关的命令。
Linux System Utilities ---> //一些系统命令。
Miscellaneous Utilities ---> //一些不好分类的命令,如crond、crontab。
Networking Utilities ---> //网络相关的命令和工具。
Print Utilities ---> //print spool服务及相关工具。
Mail Utilities ---> //mail相关命令。
Process Utilities ---> //进程相关命令,如ps、kill等。
Runit Utilities ---> //runit程序。
Shells ---> //shell程序。
System Logging Utilities ---> //系统日志相关工具,如syslogd、klogd。
说明:虽然BusyBox被称为嵌入式Linux中的瑞士军刀,但并不是一定非要使用它不可,如果你觉得它的某些功能不能满足你系统的要求,那么你可以毫不犹豫地把这些功能舍弃掉,换用其他相应的程序包。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-12/49878p2.htm
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-12/49878p2.htm
开发平台:Ubuntu11.04
目 标板:ARM体系结构
编 译器:arm-gcc-4.1.1.tar.bz2 (可从 http://www.linuxidc.com/Linux/2011-11/47824.htm 上下载)
源代码:busybox-1.19.2.tar.bz2(可从 http://www.linuxidc.com/Linux/2011-08/40704.htm 上下载)
BusyBox - The Swiss Army Knife of EmbeddedLinux.
BusyBox 是一个集成了一百多个常用Linux命令和工具的应用程序。它不仅包含了一些简单的命令,如 cat 、echo和ls等,而且还包含了一些更大、更复杂的工具,例如 grep、find、mount 以及 telnet等。简单地说,BusyBox就好像是个大工具箱,集成了许多Linux常用的工具和命令。
BusyBox最初是由Bruce Perens在1996年为DebianGNU/Linux安装盘而编写的。
1、交叉编译BusyBox的默认配置
$ tar jvxf busybox-1.19.2.tar.bz2
$ cd busybox-1.19.2/
$ make defconfig //通过执行make help获得帮助
设置交叉编译工具链前缀:
$ make menuconfig
Busybox Settings --->
Build Options --->
() Cross Compiler prefix
回车,在弹出的界面中输入交叉编译工具链的前缀:
使用arm-gcc-4.1.1.tar.bz2编译时会发生缺少头文件ubi-user.h的错误:
miscutils/ubi_tools.c:63:26: error: mtd/ubi-user.h: No such file or directory
miscutils/ubi_tools.c: In function 'ubi_tools_main':
miscutils/ubi_tools.c:133: error: 'UBI_DEV_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:133: error: (Each undeclared identifier is reported only once
miscutils/ubi_tools.c:133: error: for each function it appears in.)
miscutils/ubi_tools.c:134: error: 'UBI_VOL_NUM_AUTO' undeclared (first use in this function)
miscutils/ubi_tools.c:153: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:161: error: 'UBI_IOCATT' undeclared (first use in this function)
miscutils/ubi_tools.c:153: warning: unused variable 'req'
miscutils/ubi_tools.c:167: error: 'UBI_IOCDET' undeclared (first use in this function)
miscutils/ubi_tools.c:170: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:177: error: 'UBI_MAX_VOLUME_NAME' undeclared (first use in this function)
miscutils/ubi_tools.c:184: error: 'UBI_STATIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:186: error: 'UBI_DYNAMIC_VOLUME' undeclared (first use in this function)
miscutils/ubi_tools.c:195: error: 'UBI_IOCMKVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:170: warning: unused variable 'req'
miscutils/ubi_tools.c:201: error: 'UBI_IOCRMVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: error: storage size of 'req' isn't known
miscutils/ubi_tools.c:214: error: 'UBI_IOCRSVOL' undeclared (first use in this function)
miscutils/ubi_tools.c:204: warning: unused variable 'req'
miscutils/ubi_tools.c:222: error: 'UBI_IOCVOLUP' undeclared (first use in this function)
make[1]: *** [miscutils/ubi_tools.o] Error 1
make: *** [miscutils] Error 2
解决这个问题的方法是从linux-2.6.38.8内核源码的include/mtd/目录下拷贝头文件ubi-user.h到4.1.1/arm-linux-gnu/include/mtd/目录:
$ cd $HOME/4.1.1/arm-linux-gnu/include
$ mkdir mtd
$ cp linux-2.6.38.8/include/mtd/ubi-user.h mtd/
执行make和make install即可编译和安装:
$ make
$ make install //默认安装在当前目录的_install目录下。
2、根据项目需要适当裁减
(1)、跟Linux内核类似,BusyBox也可以通过执行make menuconfig命令启动基于ncurses的配置界面,配置界面的操作方法如下:
BusyBox中并没有尖括号(< >)的选项,也不会被编译成模块。
(2)、BusyBox将所有配置进行了分类,可以很方便地根据项目的需要进行裁减。
Busybox Settings ---> //BusyBox的通用配置,一般采用默认值即可。
---Applets
Archival Utilities ---> //压缩、解压缩相关工具。
Coreutils ---> //最基本的命令,如cat、cp、ls等。
Console Utilities ---> //控制台相关命令。
Debian Utilities ---> //Debian操作���统相关命令。
Editors ---> //编辑工具,如vi、awk、sed等。
Finding Utilities ---> //查找工具,如find、grep、xargs。
Init Utilities ---> //BusyBox init相关命令。
Login/Password Management Utilities ---> //登陆、用户账号/密码等方面的命令。
Linux Ext2 FS Progs ---> //ext2文件系统的一些工具。
Linux Module Utilities ---> //加载/卸载模块等相关的命令。
Linux System Utilities ---> //一些系统命令。
Miscellaneous Utilities ---> //一些不好分类的命令,如crond、crontab。
Networking Utilities ---> //网络相关的命令和工具。
Print Utilities ---> //print spool服务及相关工具。
Mail Utilities ---> //mail相关命令。
Process Utilities ---> //进程相关命令,如ps、kill等。
Runit Utilities ---> //runit程序。
Shells ---> //shell程序。
System Logging Utilities ---> //系统日志相关工具,如syslogd、klogd。
说明:虽然BusyBox被称为嵌入式Linux中的瑞士军刀,但并不是一定非要使用它不可,如果你觉得它的某些功能不能满足你系统的要求,那么你可以毫不犹豫地把这些功能舍弃掉,换用其他相应的程序包。
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2011-12/49878p2.htm
相关文章推荐
- hdu 5280 贪心 O(n)算法
- MAT Memory Analyzer Tool 插件装配(图解)
- ACdream 1726 A Math game
- 3.2 re--正则表达式操作(Regular expression operations)
- 3.2 re--正则表达式操作(Regular expression operations)
- Windows 10 Mobile 10166上市测试视频中文版曝光
- HDU 1233
- Windows 10第三方专用音频工具Ear Trumpet下载
- Eclipse中Junit相关介绍
- iOS开发之构建Widget
- jquery第三弹dom操作(上)
- CSU 1640 机智的刷题方式
- Android 手机影音 开发过程记录(六)
- CSU 1639 队长,我想进集训队!
- HDU 1875
- 【从零单排之微软面试100题系列】08之反转链表
- 打造最强Eclipse,搭建嵌入式开发环境(AVR)
- Creo二次开发定制
- java基础 泛型
- 【剑指Offer学习】【面试题59:对称的二叉树】