- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第三章 嵌入式Linux开发环境构建
构建嵌入式Linux开发环境的目的 构建嵌入式Linux开发环境,就是构建交叉编译环境。 简单地说,就是在一个平台上生成另一个平台上的可执行代码,嵌入式系统没有自主开发能力,需要在PC机上生成可执行代码(Bootloader、操作系统、应用程序)。 所谓平台,实际上包含两个概念: 1、体系结构 2、操作系统 构建嵌入式Linux开发环境的目的 既然有主机编译器,为什么还要交叉编译? 既然可以交叉编译,还要主机编译干吗? Linux交叉编译工具的组成 Linux交叉编译工具是工作在Linux操作系统下的一套由编译器、链接器和 libc 库等组成的开发环境。 Linux交叉编译工具的组成 binutils 包含ld、ar、as等一些产生或处理二 进制文件的工具 gcc gcc主体部分 glibc 用户层应用用到的库 gdb 目标系统的程序调试器 Linux交叉编译工具的组成-- binutils as GNU汇编器:来将汇编语言编写的程序转换成二进制形式的目标代码。 Linux的标准汇编器是GAS,它只能编译X86的汇编语言。 ld GNU接器:多个目标文件链接成为可执行程序。 add2line:地址转换为文件名或行号对,以便调试程序。 ar:文件中创建、修改、扩展文件。 gasp:汇编宏处理器。 nm :从目标代码文件中列举所有的变量(包括变量值和变量类型) ,如果 没有指定目标文件,则默认为a.out 文件。 objcopy:该工具使用 GNU BSD库,它可以把目标文件的内容从一种文件 格式复制到另一种格式的目标文件中。 objdump:显示目标文件信息。 readelf:显示 elf 目标文件的信息。 ranlib:生成索引以加快对归档文件的访问,并将其保存到这个归档文件中。 size:列出目标模块或文件的代码大小。 strings:打印可打印的目标代码字符(至少4字符)。 strip:放弃所有符号连接。 c++filt:链接器ld使用该命令可以过滤 C++符号和 Java符号,防止重载函 数冲突。 gprof:显示程序调用段的各种数据。 Linux交叉编译工具的组成-- gcc gcc gnu 的 C 语言编译器 g++ gnu 的 c++ 编译器。 unprotoize 将 ANSI C 的源码转化为 KR C 的 形式,去掉函数原型中的参数类型。 protoize 将 KR C 的源码转化为 ANSI C 的形式,函数原型中加入参数类型。 cpp gnu 的 C 的预编译器。 gcov 辅助测试工具,可以用它来分析和优程序。 Linux交叉编译工具的使用-- binutils binutils工具举例 Objdump objdump?-d?.plt vmlinux 反汇编 Strip strip –x test strip –x test.o 缩减程序大小 Linux交叉编译工具的使用--gcc Gcc 语法 --help 显示帮助信息 -V 版本信息 -x 设定文件所使用的语言 -c 只激活预处理,编译,和汇编 -S 只激活预处理和编译 -E 只激活预处理,这个不生成文件 -o 编成可执行文件 -I 制定查找目录 -M 查找依赖关系 如c文件包含哪些头文件 Linux交叉编译工具的使用--gcc gcc --help gcc –V gcc -x c test.pig -x none test2.c gcc -c test.c gcc -S test.c gcc -E test.c | more gcc -o test.exe test.c gcc –M test.c Linux交叉编译工具的使用--gdb gdb命令 list 列文件内容 run 运行文件 next 不进入的单步执行 step 进入的单步执行 print 显示变量 whatis 显示变量类型 info break 显示当前gdb的断点信息 break 在某行设置断点 delete breakpoint 删除指定的某个断点 Linux交叉编译工具的使用--gdb list 5,7 run next step print a whatis a break 5 info break delete
文档评论(0)