- 1、本文档共143页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式Linux编程基础 南京邮电大学信息安全系 大纲 C文件到二进制文件 嵌入式交叉编译环境构建 嵌入式编译工具使用 基础工具gcc/as/ldd/ar/gdb等使用 高级工具objcopy/strip/readelf/ldd等使用 Make工具及Makefile文件使用 嵌入式可执行文件格式解析 PART ONE C文件到二进制文件之旅 面向嵌入式系统的软件开发环境(传统的开发环境) 编译器和汇编器的作用 编译器将C文件转换成为汇编文件 汇编器将汇编文件转换成为二进制指令流*.o文件(目标文件) 每个目标文件是独立编址的,也就是说每个目标文件的第一条指令都从相同的地址开始存放 目标文件的结构 连接器的作用 将多个目标文件或库文件按照各文件中段进行统一编址 生成一个完整的统一的地址印象 嵌入式系统中一般生成一个绝对地址印象(非PIC) 在有MMU的系统中可以为每个任务单独分配一个地址空间 连接器的作用 PART TWO 嵌入式交叉编译环境构建 开发环境 交叉编译环境 随着硬件平台和操作系统的多样化,软件向不同平台移植的工作变得越来越繁复。交叉编译技术的引入为软件的不同平台移植创造了便利条件。在交叉编译技术中有两种比较典型的实现: Java模式,即Java的字节码编译技术; GNU GCC 模式,即通常所讲的Cross GCC 技术。 嵌入式交叉编译环境 嵌入式交叉编译环境就是在PC机上建立基于开发板的程序编译环境,它有两个非常显著的特点 第一,整套交叉编译环境建立在PC机上,它和PC机的编译环境共存; 第二,利用交叉编译环境编译出来的可执行程序只能在嵌入式开发板上运行。 (cont.) 在linux终端下用vi建立程序exam6-1.c 基于嵌入式开发板进行编译 -#arm-linux-gcc –o exam6-1-2 exam6-1.c 基于PC机上进行编译: - # gcc –o exam6-1-1 exam6-1.c 在PC机上执行 - # ./exam6-1-1 如果在PC机上执行 -./exam6-1-2 bash: ./exam6-1-2: cannot execute binary file (cont.) # objdump –d exam6-1-1 # arm-linux-objdump –d exam6-1-2 可以看出这两个可执行程序的汇编码并不完全相同 Host与Target GNU GCC 模式 PART II 嵌入式交叉编译环境 嵌入式交叉编译环境构建 步骤 从网上下载交叉编译工具链压缩包 目前网络上主要流行下列两种类型的压缩包 :cross-2.95.3.tar.bz2 cross-3.3.2.tar.bz2 建立目录 #cd /usr/loal #mkdir arm 将cross-2.95.3.tar.bz2拷贝到/usr/local/arm目录下 解压缩包 #tar xjvf cross-2.95.3.tar.bz2 修改/etc/bashrc文件 编辑/etc/bashrc 文件, 在最后增加路径 export PATH=/usr/local/arm/2.95.3/bin:$PATH 嵌入式交叉编译环境 Linux 下的GCC 交叉编译器 GNU Binutils GNU Binutils 的主要工具有两个,一个是连接程序ld,另外一个是汇编程序as。其主要目的是为GNU 系统,提供汇编和连接工具。 GNU GCC GNU GCC 就是上面提到的GCC,GCC 主要是为GNU 系统提供C 编译器。现在支持多种语言,这其中包括C/C++、Fortran、Java、Objective-C、甚至还有Ada。 GNU GLibc 用于定义系统调用和其它一些基本的函数调用。 GCC 交叉编译器生成 第一步,取得Binutils、GCC、Glibc 的源码。 第二步,配置并编译Binutils 取得我们所需要的汇编和连接程序。 第三步,配置并编译GCC 源码生成GCC 编译器。一般是C 编译器首先生成,然后以这个为基础在结合下一步要生成的Glibc 的C 函数库,再编译生成其它编译器。 第四步,配置Glibc 并编译生成Glibc 的C 函数库。 第五步,再次配置和编译GCC 源码,生成其它语言的编译器,如C++编译器等。 生成的Toolchain Binutils工具包介绍 addr2line :把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。 ar:建立、修改、提取归档文件。归档文件是包含多个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。
您可能关注的文档
最近下载
- 烽火网管ANM2000地操作和5516下GPON型ONU业务开通介绍.docx VIP
- PON组网及原理06-AN5516-01 GPON开通配置方法.ppt VIP
- AN5516-01-GPON开通配置方法.ppt VIP
- 烽火AN5516-01 GPON开通流程.ppt VIP
- 高中数学竞赛(强基计划)历年真题练习 9 排列组合二项式定理与概率统计综合 (学生版+解析版).pdf VIP
- 中兴OLT链路聚合配置.ppt VIP
- 2023核电厂核安全文化同行评估导则.doc
- OLT设备测试1.doc VIP
- 高中数学竞赛(强基计划)历年真题练习 4 向量 (学生版+解析版).pdf VIP
- 【高中数学竞赛真题•强基计划真题考前适应性训练】 专题06 不等式 真题专项训练(全国竞赛+强基计划专用)解析版.docx VIP
文档评论(0)