vi+gcc+make工具集介绍2014-2015-1.ppt

  1. 1、本文档共109页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vigccmake工具集介绍2014-2015-1

* GNU make 的主要预定义变量 * 4. make命令行选项 直接在make 命令的后面键入目标名可建立指定的目标,如果直接运行make,则建立第一个目标。还可以用make -f mymakefile 这样的命令指定make 使用特定的makefile,而不是默认的NUmakefile、makefile或Makefile。 GNU make 命令还有一些其他选项,下面是GNU make 命令的常用命令行选项命令行选项含义: * make命令行选项 -C DIR 在读取makefile 之前改变到指定的目录DIR。 -f FILE 以指定的FILE 文件作为makefile。 -h 显示所有的make 选项。 -i 忽略所有的命令执行错误。 -I DIR 当包含其他makefile 文件时,可利用该选项指定搜索目录。 -n 只打印要执行的命令,但不执行这些命令。 -p 显示make 变量数据库和隐含规则。 -s 在执行命令时不显示命令。 -w 在处理makefile 之前和之后,显示工作目录。 -W FILE 假定文件FILE 已经被修改。 * 3、GNU Tools—ld ld,The GNU Linker Linux上常用的链接器 ld软件的作用是把各种目标文件(.o文件)和库文件链接在一起,并定位数据和函数地址,最终生成可执行程序 gcc可以间接的调用ld,使用gcc的-Wl参数可以传递参数给ld 使用命令:ld --help可以列出ld常用的一些选项 * ld使用举例(1) 源程序 编译hello.c到hello.o 命令:gcc -c hello.c * ld使用举例(2) 链接 命令:ld –dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o hello.o –lc –o hello 运行 ./hello * 目标文件 ld通过BFD库可以读取和操作coff、elf、a.out等各种执行文件格式的目标文件 BFD(Binary File Descriptor) 目标文件(object file) 由多个节(section)组成,常见的节有: text节保存了可执行代码, data节保存了有初值的全局标量, bss节保存了无初值的全局变量。 * 使用objdump查看目标文件的信息 objdump –h hello.o 比较hello 看看有什么不同? * 链接描述文件( Linker script ) 可以使用链接描述文件控制ld的链接过程。 链接描述文件,command file 又称为链接脚本,Linker script 用来控制ld的链接过程 描述各输入文件的各节如何映射到输出文件的各节 控制输出文件中各个节或者符号的内存布局 使用的语言为: The ld command language,链接命令语言 * ld命令的-T commandfile选项指定了链接描述文件名 如果不指定链接描述文件,ld就会使用一个默认的描述文件来产生执行文件 找到Linux或者uClinux中的链接描述文件并分析。 * 链接描述文件的命令 链接描述文件的命令主要包括如下几类: 设置入口点命令 处理文件的命令 处理文件格式的命令 其他 * 常用的命令 设置入口点 格式:ENTRY(symbol) 设置symbol的值为执行程序的入口点。 ld有多种方法设置执行程序的入口点,确定程序入口点的顺序如下: ld命令的-e选项指定的值 Entry(symbol)指定的值 .text节的起始地址 入口点为0 * 常用的命令 INCULDE filename 包含其他filename的链接描述文件 INPUT(file,file,…) 指定多个输入文件名 * 常用的命令 OUTPUT_FORMAT(bfdname) 指定输出文件的格式 OUTPUT_ARCH ( bfdname ) 指定目标机器体系结构,例如: OUTPUT_ARCH(arm) * 常用的命令 MEMORY: 这个命令在用于嵌入式系统的链接描述文件中经常出现,它描述了各个内存块的起始地址和大小。格式如下: MEMORY { name [(attr)]:ORIGIN = origin,LENGTH = len … } 例如: * * * 文件包含:#include是最为常见的预处理,主要将指定的文件代码组合到源程序代码之中。 条件编译:#if、#ifdef、#ifndef、#if defined、#endif、#undef等也是常用的预处理,主要是在编译时进行选择性编译,有效地控制版本和编译范围,防止对文件的重复包含等重要功能。

文档评论(0)

676200 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档