网站大量收购闲置独家精品文档,联系QQ:2885784924

Linux基础-g的cc编译器.ppt

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

静态库编译与加载 生成源文件的目标机器文件 对目标机器文件进行归档 编译可执行程序并加载静态库,执行main程序,看其效果静态库加载到可执行程序中,只需在编译的时候,跟上需要加载的库名即可 执行结果 动态库 (共享库)编译与加载 生成源文件的目标机器文件 对目标机器文件进行处理,编译出动态库 编译可执行程序并加动态库,执行main程序,看其效果 执行结果: 动态库 (共享库)编译与加载 编译与运行加载的情况不同,我们已经在编译的时候指定过需要加载的库,但是运行的时候为何提示找不到? LINUX下:默认的库加载路径为/lib/ 、 /usr/lib/ 有多种办法解决问题: 将libfun.so拷贝到默认的库目录中(/lib/或/usr/lib/); 设置新的环境变量: export LD_LIBRARY_PATH=./ echo $LD_LIBRARY_PATH 总结 我们使用gcc编译了一个简单的程序,通过该程序引申gcc的四个编译步骤,再对四个编译步骤进行逐一解释。 学习了gcc的一些常用编译选项,有涉及到优化、头文件、连接库、警告、调试等等。 了解了动态库与静态库,用示例演示如何生成动、静态库,并在可执行程序中分别加载它们。 练习 完成本章PPT中所有的代码练习,对 gcc的每一个选都了解。 简述gcc编译流程,并说明编程中每一个步骤产生的中间文件的类型。 Linux基础 – gcc编译器 gcc内容大纳 gcc的简介 如何使用gcc编译一个简单的C程序 gcc的编译流程 gcc的常用编译选项 使用gcc实现多文件编译 使用gcc编译静态库、动态库 学习目标 掌握gcc,掌握gcc的编译过程 知道一些常见的编译错误 多文件编译的方法 了解动态库与静态库的区别 掌握静、动态库的编译方法 gcc的简介 gcc是一个用于linux系统下编程的编译器。 gcc原名为 GNU C compile(语言编译器),因为它原本只能处理 C语言。 gcc 很快地扩展,变得可处理 C++,之后也变得可处理 Pascal、Object-C、Java以及其他语言。 GNU是一个开源项目组,是一个递归的缩写。 GNU : GNU is NOT UNIX gcc的格式 gcc指令的一般格式为: gcc [选项] 要编译的文件 [选项] [目标文件] 其中目标文件可以缺省,缺省情况,生成的可执行文件名为a.out 使用gcc编译一个简单的C程序 使用vi编写一个简单的hello world程序, 并使用gcc编译,缺省情况下编译成功后,会生成可执行文件a.out 我们可以通过gcc的-o选项指定生成的可执行文件名 以上两条命令,实际隐含了四个步骤。 gcc编译流程 使用gcc编译程序的时候 ,实际包含了四个步骤: 预处理(Pre-processing) 读取C语言源文件,对以“#”开头的语句进行处理 编译(Compilation) 对预处理之后输出的文件进行词法分析,试图找出所有不符合语法规则的部份,打印错误或警告。若没有任何语法问题,则将其翻译为功能等价的汇编代码 汇编(Assembly) 把汇编代码翻译成目标机器代码(二进制文件) 链接(Linking) 将一个文件中引用的符号(函数、外部变量等)与该符号在另文件中的定义和实现连接起来,从而使有关的目标文件连成一个整体,最终生成可以被操作系统执行的可执行文件 写一个简单的测试程序 写一个简单的程序gcc-test.c便于我们接下来探讨用,写完之后仔细阅读该代码,了解代码功能,并判断是否有问题: gcc编译流程 – 第一步:预处理 在该阶段,gcc将对以“#“起始的语句进行处理: 将头文件展开 : 将头文件的内容展开至C文件 做宏的替换 : 将源文件中出现的宏做宏值替换。 条件编译的判断 : 根据条件编译选项,加载指定代码 (注:该阶段会删除注释代码) 可以通过gcc的选项-E来单独执行预处理,而不处理其它三个步骤,并生成gcc-test.i的文件: gcc编译流程 – 第一步:预处理 预处理成功后,使用cat 指令查看gcc-test.i的文件信息,并对源文件比较: 以上省略n行 gcc编译流程 – 第一步:预处理 预处理总结: 在预处理时,gcc编译器仅仅做的只是对头文件的展开、宏的替换、条件编译选项的判断,注释删除操作(注:不做语法检测)。 因此,在预处理时,gcc编译器不会出现任何错误提示。即便是非C源代码的普通文本文档,我们也可以使用预处理执行。 gcc编译流程 – 第二步:编译 在这个阶段中,gcc将对所有正文内容进行处理: 首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工

文档评论(0)

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

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

1亿VIP精品文档

相关文档