- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DIY自己的GNU交叉工具链(i386-arm) 嵌入式设备由于不具备一定的处理器能力和存储空间,程序开发一般用PC来完成,然后将可执行文件下载到嵌入式系统中运行。这是目前嵌入式程序开发的不二选择——Host/target模式。但这引发了一个问题:由于Host和Target的处理器体系结构不同,我们不能直接用PC上既有的程序开发工具,必须使用跨平台开发工具,即在Host上生成能在Target上运行格式的目标文件。与在PC上进行程序开发类似,嵌入式系统开发也需要编译器、链接器、解释程序等。本文讨论GNU跨平台开发工具链的建立,包括: ld, gas, ar, gcc, glibc.自己建立交叉编译环境是一件很头疼的事(处理版本的依赖性, 漫长的编译过程...),如果你不想经历这样的痛苦,可以选择网上编译好了的工具链进行安装.如果你用的是Debian/Ubuntu的发行版, 推荐使用Emdebian. 如果使用uClinux, 也可安装arm-elf-tools.关于Emdebian和arm-elf-tools的更多介绍, 情看本blog的这篇文章!前提: 建立工作目录
在为目标板开发及定制软件的过程中, 最好将项目要用到的代码, 文档, 及生成的目标文件按一定的组织放在统一的, 结构化的目录中. 这里采用《构建嵌入式Linux系统》中推荐的项目目录安排:
?目录
内容
bootldr
目标板的引导加载程序
build-tools
建立跨平台开发工具链所需要用到的包和目录
debug
调试工具及相关包
doc
项目相关的文档
images
使用在目标板上的引导加载程序和内核的二进制映像, 以及根文件系统
kernel
将在目标板上进行评估的各个内核版本
rootfs
目标板的内核在运行时看到的根文件系统
sysapps
目标板需要用到的系统应用程序
tmp
进行实验时或临时文件会用到此目录
tools
?放置跨平台开发工具链以及C链接库
上表列出的是一个完备的目录结构, 使用于一个实际的项目. 本文关注的是建立跨平台工具链,? 它使用下面的目录:build-tools, tools, kernel
其中, 在build-tools建立下列目录: $ mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patch
设置环境变量前面建立的项目空间目录众多, 我们可以设置一些环境变量以方便后面的工作. 你可以在命令行中设定这些环境变量. 当然, 更简单的方法是建立一个名为RunFirst.sh的bash脚本. 将该脚本放在项目根目录中, 每次登录时运行它既可进入你的工作环境: $ ./RunFirst.sh
#!/bin/bashexport PRJROOT=/home/zp/project/EmbeddedLinuxexport TARGET=arm-linuxexport PREFIX=${PRJROOT}/toolsexport TARGET_PREFIX=${PREFIX}/${TARGET}export PATH=${PREFIX}/bin:${PATH}cd PRJROOT
PRJROOT? :指定了项目的根目录.TARGET? :指定了目标般类型, 如果要更换目标板类型(比如换成PowerPC), 那么需要更改TARGET, 并重新编译工具链.PREFIX? :为后面用到的建立工具链的命令提供了一个指针, 它指向目标板工具程序将被安装的目录.TARGET_PREFIX? :指定与目标板相关的头文件和链接库将被安装的位置.PATH? :指定可执行文件的位置. 当交叉编译工具被建立后, 它告诉Bash首先在我们自己建立的工具链目录中寻找可执行文件.执行最后一条命令就会移动到项目的根目录.
注意运行脚本的方式: 一般是有两种方法source file.sh或./file.sh. 如果直接调用脚本名, 当前shell会生成一个子shell去执行脚本, 子shell在脚本运行完后退出. 不会对当前shell产生影响. 也就是说当前设置的环境变量只对子shell起作用. 所以不用这种方法运行. 而使用source. source命令使得脚本在当前shell的上下文中被执行.
本工具链的各组件的版本为:gcc : 2.95.3binutils : 2.10.1glibc : 2.2.3 + libc-linuxthreads-2.2.3kernel : 2.4.21 + patch-2.4.21-rmk2
建立工具链的步骤:
设置内核头文件
设置binutils
设置引导编译器boot
文档评论(0)