Linux基础之源代码编译和调试详细资料.pptx

Linux基础之源代码编译和调试详细资料.pptx

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
讲师:杨行;课程目标;课程安排;课前提问;本章目标;文本编辑器的作用 Linux系统中的配置文件以文本文件的形式保存 Linux管理员需要通过编辑配置文件进行系统管理 文本编辑器的分类 行编辑器与全屏幕编辑器 字符界面编辑器与图形界面编辑器 ;vi Linux学习者需要掌握的第一个文本编辑器 大多数Linux系统中缺省使用的文本编辑器 Emacs 用于编辑程序源代码文件的文本编辑器 nano 在字符界面提供了菜单操作,易用性较好 gedit GNOME图形环境中的文本编辑器;vi编辑器中有三种状态模式 命令模式 输入模式 末行模式;vi编辑器的启动与退出 文件操作 光标移动操作 编辑操作 查找与替换操作 vi编辑器的在线帮助 ;直接进入编辑环境 $ vi 进入编辑环境并打开(新建)文件 $ vi myfile 退出vi编辑环境 输入末行命令放弃对文件的修改,并退出编辑器 :q! ;读取文件 保存文件 另存为文件 退出vi编辑器 ;保存文件 保存对vi编辑器中已打开文件的修改 :w 另存为文件 将vi编辑器中的内容另存为指定文件名 :w myfile ;未修改退出 没有对vi编辑器中打开的文件进行修改,或已对修改进行了保存,直接退出vi编辑器 :q 保存并退出 对vi编辑器中的文件进行保存并退出vi编辑器 :wq 不保存退出 放弃对文件内容的修改,并退出vi编辑器 :q!;编译工具:把一个源程序编译为一个可执行程序 调试工具:能对执行程序进行源码或汇编级调试 软件工程工具:用于协助多人开发或大型软件项目的管理,如make、CVS、Subvision 其他工具:用于把多个目标文件链接成可执行文件的链接器,或者用作格式转换的工具。;/ / / / / /index.php ;全称为GNU CC ,GNU项目中符合ANSI C标准的编译系统 编译如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言 GCC是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30% 一个交叉平台编译器 ,适合在嵌入式领域的开发编译 ;17;18;19;分析器:分析器将源语言程序代码转换为汇编语言。因为要从一种格式转换为另一种格式(C到汇编),所以分析器需要知道目标机器的汇编语言。 汇编器:汇编器将汇编语言代码转换为CPU可以执行字节码。 链接器:链接器将汇编器生成的单独的目标文件组合成可执行的应用程序。链接器需要知道这种目标格式以便工作。 标准C库:核心的C函数都有一个主要的C库来提供。如果在应用程序中用到了C库中的函数,这个库就会通过链接器和源代码连接来生成最终的可执行程序。 ;21;22;第一类∶C语法错误 错误信息∶文件source.c中第n行有语法错误(syntex errror)。有些情况下,一个很简单的语法错误,gcc会给出一大堆错误,我们最主要的是要保持清醒的头脑,不要被其吓倒,必要的时候再参考一下C语言的基本教材。 第二类∶头文件错误 错误信息∶找不到头文件head.h(Can not find include file head.h)。这类错误是源代码文件中的包含头文件有问题,可能的原因有头文件名错误、指定的头文件所在目录名错误等,也可能是错误地使用了双引号和尖括号。 ; 第三类∶档案库错误 错误信息∶链接程序找不到所需的函数库(ld: -lm: No such file or directory )。这类错误是与目标文件相连接的函数库有错误,可能的原因是函数库名错误、指定的函数库所在目录名称错误等,检查的方法是使用find命令在可能的目录中寻找相应的函数库名,确定档案库及目录的名称并修改程序中及编译选项中的名称。 ; 第四类∶未定义符号 错误信息∶有未定义的符号(Undefined symbol)。这类错误是在连接过程中出现的,可能有两种原因∶一是使用者自己定义的函数或者全局变量所在源代码文件,没有被编译、连接,或者干脆还没有定义,这需要使用者根据实际情况修改源程序,给出全局变量或者函数的定义体;二是未定义的符号是一个标准的库函数,在源程序中使用了该库函数,而连接过程中还没有给定相应的函数库的名称,或者是该档案库的目录名称有问题,这时需要使用档案库维护命令ar检查我们需要的库函数到底位于哪一个函数库中,确定之后,修改gcc连接选项中的-l和-L项。 ;#includestdio.h int main(void) { int i,j; j=0; i=j+1; printf(“hello,world\n”); printf(“the result is %d\n”,i); } 编译: $ gc

文档评论(0)

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

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

1亿VIP精品文档

相关文档