第五章 Linux下C编程.ppt_第1页
第五章 Linux下C编程.ppt_第2页
第五章 Linux下C编程.ppt_第3页
第五章 Linux下C编程.ppt_第4页
第五章 Linux下C编程.ppt_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章Linux下C编程 5 1C语言简介 在80年代末期美国国家标准协会 AmericanNationalStandardsInstitute 发布了一个被称为ANSIC的C语言标准 这更加保证了将来在不同平台上的C的一致性 Linux上可用的C编译器是GNUC编译器 它建立在自由软件基金会的编程许可证的基础上 因此可以自由发布 你能在Linux的发行光盘上找到它 5 2GNUC编译器 一 基本用法gcc options filenames 说明 在gcc后面可以有多个编译选项 同时进行多个编译操作 很多的gcc选项包括一个以上的字符 因此你必须为每个选项指定各自的连字符 例如 下面的两个命令是不同的 gcc p gtest1 cgcc pgtest1 c当你不用任何选项编译一个程序时 GCC将会建立 假定编译成功 一个名为a out的可执行文件 基本编译选项 o选项你能用 o编译选项来为将产生的可执行文件指定一个文件名来代替a out 例 gcc ocountcount c c选项 告诉GCC仅把源代码编译为目标代码而跳过汇编和连接的步骤 这个选项使用的非常频繁 因为它使得编译多个C程序时速度更快并且更易于管理 缺省时GCC建立的目标代码文件有一个 o的扩展名 例 gcc ctest2 c 警告选项 在gcc中用开关 Wall控制警告信息 使用示例命令如下 gcc Wall otest3 1test3 1 c 查找选项 gcc一般使用默认路径查找头文件和库文件 如果文件所用的头文件或库文件不在缺省目录下 则编译时要指定它们的查找路径 I选项 指定头文件的搜索目录例 gcc I export home st otest1test1 c L选项 指定库文件的搜索目录例 gcc L usr X11 R6 lib otest1test1 c 多个源文件生成一个可执行文件 问题 有多个源文件时 如何生成一个可执行文件 方法1 gcc Wall omytesttest1 ctest2 ctest3 c方法2 gcc Wall ctest1 cgcc Wall ctest2 cgcc Wall ctest3 cgcc omytesttest1 otest2 otest3 o 优化选项 优化选项可以使GCC在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件 这些选项中最典型的是 O和 O2选项 O选项 告诉GCC对源代码进行基本优化 这些优化在大多数情况下都会使程序执行的更快 O2选项 告诉GCC产生尽可能小和尽可能快的代码 O2选项将使编译的速度比使用 O时慢 但通常产生的代码执行速度会更快 版本选项 v选项用户将会得到自己目前正在使用的gcc的版本及与版本相关的一些信息 gcc v将得到如下结果 Readingspecsfrom usr lib gcc lib i486 box linux 2 7 2 specsgccversion2 7 2 V选项如果安装了多个版本的gcc 并且想强制执行其中的某个版本 可以用命令通知系统用户要使用的版本 gcc V2 6 3 v 调试和剖析选项 使用调试选项后 gcc在进行编译的时候 在目标文件 o 和创建的可执行文件中插入额外信息 这些额外信息使gdb能够判断编译过的代码和源代码之间的关系 g选项 告诉GCC产生能被GNU调试器使用的调试信息以便调试你的程序 例 gcc g otest3test3 c pg选项 告诉GCC在你的程序里加入额外的代码 执行时 产生gprof用的剖析信息以显示你的程序的耗时情况 使用gdb调试工具 命令行如下 例 gcc ggdb3 otest3test3 c 5 3用gdb调试GCC程序 gdb是一个用来调试C和C 程序的常用调试工具之一 gdb所提供的一些功能 监视程序中变量的值 设置断点以使程序在指定的代码行上停止执行 逐行执行代码 分析崩溃程序的产生的core文件 gdb基本用法 需要调试的程序 在编译时要使用调试选项 在默认的情况下 调试符号不会编译到程序中 调试之后 不需要重新编译程序 gdb filename 出现 gdb 在这里 可以输入调试命令 基本gdb命令 file装入想要调试的可执行文件 kill终止正在调试的程序 list执行一行源代码但不进入函数内部 next执行一行源代码但不进入函数内部 step执行一行源代码而且进入函数内部 run执行当前被调试的程序quit终止gdbwatch使你能监视一个变量的值而不管它何时被改变 break在代码里设置断点 这将使程序执行到这里时被挂起 make使你能不退出gdb就可以重新产生可执行文件 shell使你能不离开gdb就执行UNIXshell命令 实例 程序test3 1a c 简单程序样例 程序test3 2 ctest3 2a c 程序优化样例 用命令time test3 2查看效果 程序test3 3 c 错误程序的例子 用gdb查错 程序自动维护工具make 问题 当开发的程序非常庞大 且关系复杂 手工编译链接非常困难解决 利用一个自动系统控制和协调整个程序的创建过程 在这个自动系统中 程序员可以定义创建规则并通过这个规则进行项目的开发 makefile就是定义这种规则的文件 GNUmake解释执行makefile make是一种自动生成和维护目标程序的工具 可以调用编译器 连接器等根据程序各部分的修改情况 重新编译链接目标代码输入make命令后 系统自动检测系统文件和以定义的规则 完成整个创建过程 程序自动维护工具make 简单makefile文件的写法由若干规则组成 每个规则说明一个目标规则的格式 目标 属性 分隔符 依赖文件 命令菜单 命令菜单 说明 表示可选 表示可以多次出现涉及的文件名允许用通配符例子 c程序test5 1 txt和它的makefile 程序自动维护工具make make命令的使用 make opt

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论