- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式移植基础知识_20100408课件.ppt
中国科学院声学研究所 Institute of Acoustics, Chinese Academy of Sciences * * 嵌入式移植相关问题 内容提要 编译链接介绍 Makefile介绍 嵌入式移植一般步骤 嵌入式移植举例 编译的概念 编译:把源文件(c/cpp)编译成目标文件,在Windows下也就是?.obj?文件,Linux下是?.o?文件。 词法分析与语法分析:检查语法、函数与变量声明等; 目标代码生成:根据源文件生成目标CPU的汇编文件。每个源文件对应一个目标文件。 链接的概念 链接:主要链接函数和全局变量。将自己代码生成的Object File合并成可执行文件(如果用了别的库,需要找到或者合并其他库提供的函数。) 打包:将多个Object文件打包成一个文件。Linux下为.a文件,Windows下为.lib文件。Linux下用”ar”命令可完成该操作。 Linux链接错误:unrefenced xxx 编译Helloworld Helloworld 词法分析与语法分析 识别int,void,printf, “”,return, 0 检查{}配对,”type functionname(param)” 中间代码生成 特别注意:符号表 #include stdio.hint main(void){? ? printf(Hello World!\n);? ? return 0;} Helloworld符号表 Helloworld.o的符号表 外部符号:puts,用到了标准C库(libc)函数 SYMBOL TABLE:l??? df *ABS*?hello.cl??? d? .text?00000000 l??? d? .data?00000000 l??? d? .bss??00000000 l??? d? .rodata.str1.100000000 l??? d? .comment??????00000000 g??? F? .text?main??????? *UND*?puts Helloworld链接过程 静态链接(链接libc.a) 链接时,将puts的代码搬移到Helloworld可执行程序中 运行时,直接执行在Helloworld中的puts代码 动态链接(链接libc.so) 链接时,检查是否可以找到puts符号,并记录提供puts执行码的动态库(这里是libc.so)以及其他一些信息 运行时,当需要执行puts时,加载libc.so,找到puts的地址,执行puts 内容提要 编译链接介绍 Makefile介绍 嵌入式移植一般步骤 嵌入式移植举例 Makefile规则 规则描述 规则解释 target也就是一个目标文件,可以是Object?File,也可以是执行文件。 prerequisites就是,要生成那个target所需要的文件或是目标。 command也就是make需要执行的命令。 target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。 target?...?:?prerequisites?... ????????????command ????????????... ????????????... Makefile举例 依赖关系解释,TAB键… 输入命令“make”就可以生成执行文件edit。make会比较targets文件和prerequisites文件的修改日期,如果prerequisites文件的日期要比targets文件的日期要新,或者target不存在的话,那么,make就会执行后续定义的命令 输入命令“make clean”就可以删除执行文件和所有的中间目标文件 Makefile中的变量 针对前面的例子 常用的变量 CC, AR, … CC = mipsel-linux-gcc AR = mipsel-linux-ar CFLAGS, LDFLAGS, … CFLAGS = -I$(dir_for_include) –O2 LDFLAGS = -L$(dir_for_lib) –l$(libname) 内容提要 编译链接介绍 Makefile介绍 嵌入式移植一般步骤 嵌入式移植举例 开发环境准备 编译链接环境:工具链(交叉编译器) 自己编译工具链:arm-elf-gcc … 使用现成的工具链: mipsel-linux-gcc … 将工具链
您可能关注的文档
- 山东省冠县武训高级中学高中语文晏子治东阿》课件新人教版必修4课件.ppt
- 山东省寿光市田柳镇教育办公室九年级化学上册22氧气》课件共21张PPT)课件.ppt
- 山东省平度市郭庄镇郭庄中学九年级化学上册燃烧与灭火》课件共26张PPT)课件.ppt
- 山东省滕州市大坞镇大坞中学九年级化学上册第二单元+氧气实验室制法》课件共23张PPT)课件.ppt
- 山东省潍坊市实验学校木结构承重井光兵课件.ppt
- 山东省潍坊高新区浞景学校九年级化学上册44+化学式和化合价》课件共21张PPT)课件.ppt
- 山东省邮政谈判技巧课件.ppt
- 山东省重点产业调整振兴规划浅课件.ppt
- 山中杂记课件.ppt
- 山传海房地产策划师培训讲义课件.ppt
文档评论(0)