- 1、本文档共20页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
busybox
BusyBox的原理BusyBox揭露了这样一个事实:很多标准Linux工具都可以共享很多共同的元素。例如,很多基于文件的工具(比如grep和find)都需要在目录中搜索文件的代码。当这些工具被合并到一个可执行程序中时,它们就可以共享这些相同的元素,这样可以产生更小的可执行程序。公共部分catlstftp$tftp$ls$cat$BusyBox
BusyBox执行原理BusyBox使用了符号链接以便使一个可执行程序看起来像很多程序一样。对于BusyBox中包含的每个工具来说,都会这样创建一个符号链接,这样就可以使用这些符号链接来调用BusyBox了。BusyBox然后可以通过argv[0]来调用内部工具。
BusyBox执行原理——示例//test.c#includestdio.hintmain(intargc,char*argv[]){ inti; for(i=0;iargc;i++) { printf(argv[%d]=%s\n,i,argv[i]); } return0;}$gcc-Wall-otesttest.c
BusyBox执行原理——示例(续)$./testarg1argv[0]=./testargv[1]=arg1$mvtestnewtest$./newtestarg1argv[0]=./newtestargv[1]=arg1$ln-snewtestlinktest$./linktestargargv[0]=./linktestargv[1]=arg
BusyBox执行原理(续)$ln–sbusyboxtftp$ln–sbusyboxls$ln–sbusyboxcat以tftp为首个参数去调用Busybox以ls为首个参数去调用Busybox以cat为首个参数去调用Busybox公共部分catlstftp$tftp$ls$cat$BusyBox
配置并编译BusyBox我们可以从BusyBox的Web站点上下载最新版本的BusyBox。与大部分开放源码程序一样,它是以一个压缩的tar包的形式发布的,我们可以解压缩为源代码树。然后配置并编译。
BusyBox源代码树BusyBox的源代码树组织得很好。这些工具都基于它们的用途进行了分类,并存储在单独的子目录中。例如,网络工具和守护进程(如httpd、ifconfig等)都在./networking目录中;标准的模块工具(包括insmod、rmmod和lsmod)都在./modutils目录中;编辑器(例如vi和流编辑器,如awk和sed)都在./editors目录中。makefile配置、编译和安装所用的各个文档都在这个目录树的根目录中。
BusyBox提供的make选项makehelp:显示make选项的完整列表makedefconfig:启用默认的(通用)配置makeallnoconfig:禁用所有的应用程序makeallyesconfig:启用所有的应用程序makeallbareconfig:启用所有的应用程序,但是不包括子特性makeconfig:基于文本的配置工具
BusyBox提供的make选项(续)makemenuconfig:N-curses(基于菜单的)配置工具makeall:编译BusyBox二进制文件和文档makebusybox:编译BusyBox二进制文件makeclean:清除源代码树makedistclean:彻底清除源代码树makesizes:显示所启用的应用程序的文本/数据大小
makemenuconfig
BusyBox配置重要选项静态编译:BuildOptions-BuildBusyBoxasastaticbinary(nosharedlibs)这个选项是一定要选择的,这样才能把busybox编译成静态链接的可执行文件,运行时才独立于其他函数库。否则必须要其他库文件才能运行,在单一个linux内核不能使他正常工作。
BusyBox配置重要选项(续)交叉编译:BuildOptions-DoyouwanttobuildBusyBoxwithaCrossCompiler?选上CrossCompilerprefix,如果交叉编译工具链在/usr/bin目录下,前缀为arm-elf,则这里写/usr/bin/arm-elf-
BusyBox配置重要选项(续)安装选项:Installatio
您可能关注的文档
最近下载
- 伊犁师范大学辅导员考试试题2024 .pdf VIP
- 中央八项规定精神学习教育学习计划(2025年3月-7月).docx VIP
- 大学生心理情景剧剧本2篇.pdf VIP
- 中环新宇年产塑料零件及其他注塑制品3500吨项目环境影响评价报告公示.pdf
- 蛋鸡标准化规模养殖场建设规范.docx VIP
- 钢琴谱 五线谱 天空之城 简易版 钢琴谱.pdf VIP
- 思想道德与法治(2023年版) 第三章 继承优良传统 弘扬中国精神 第三节+让改革创新成为青春远航的动力.pptx VIP
- 八年级地理下册 第七章 综合测试卷(湘教版 2025年春).pdf VIP
- 关节活动度测量的图解.docx
- 龍門心法上下二卷第一册.pdf
文档评论(0)