文档之家
首页
教学研究
幼儿教育
高等教育
外语考试
建筑/土木
经管营销
自然科学
当前位置:
文档之家
›
第6章 常用开发工具
第6章 常用开发工具
格式:ppt
大小:1.07 MB
文档页数:41
下载文档原格式
下载原文件
/ 41
下载本文档
合集下载
下载提示
文本预览
1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18
Linux编程
2-2 linux库文件的命名约定 (P183)
(1) 实例
libm.so libc.so libgame.a
return
(2) linux库文件的命名约定
① 以lib开头
② 中间部分通常用于标识这是什么库
③ 以.so结尾表示为共享库;以.a或.sa结尾表示为静态库
19
Linux编程
库函数只能在用户态下运行,不能进入核心态;而系统调用可
以实现从用户态到核心态的转变。
图示1
图示2
14
用户程序 用户空间 库函数 调用 系统调用 内核空间 …… 设备驱动程序 操作系统
控制 硬件 硬件设备
系统调用与库函数的关系(P206)
return
用户程序 库函数
用户程序 用户进程
系统调用 系统内核
实例3: 选项-Linux编程
4. 调试工具gdb
next part
gdb简介 debug .vs. test gdb常用命令
go go
go
go
gdb使用实例
26
Linux编程
gdb简介
gdb是GNU提供的在linux下使用的调试工具。(详细功能 说明见帮助或教材相关说明) gdb需要和gcc配合使用。为了发挥gdb的全部功能,需
了解调试工具gdb的常用命令
了解维护工具make的工作原理与使用方法
3
Linux编程
1. 系统编程基础
next part
程序设计环境
go go go
程序设计思想
系统编程的外在支持
4
Linux编程
1-1 程序设计环境
return
理想中的程序设计环境
多任务下的程序设计环境
go go
5
Linux编程
32
Linux编程
make工具简介
make是GNU提供的在linux下使用的程序维护工具。主要用于 大型程序的维护。
return
其工作机制是: 自动检测一个大型程序的哪些部分需要重新编 译,然后发出命令重新编译它们。
使用make进行维护时,需要编写一个makefile文件。该文件
提供:
程序间的依赖关系
next
附:
return
本章小结
编译工具gcc
调试工具gdb
• shell • 规则 系统空间 • (内核) 应用程序名 [-f 文件名] make
维护工具make
磁盘
37
Linux编程
本章课后任务
结合本章书后习题:
练习使用gcc编译c程序的方法,整理常用选项
练习使用gdb调试c程序的方法,了解常用gdb命令
(详细说明见备注) return
Linux编程
1-3 系统编程的外在支持
return
系统调用
库函数
go go go
系统调用 .vs. 库函数
11
Linux编程
系统调用
位于内核空间的操作系统向外提供多种服务供用户使用。
这些服务以系统调用的方式提供给用户。 不同操作系统所提供的系统调用的数量和类型有所不同, 但功能类别大致相同。 进程管理类 内存管理类 文件管理类 设备控制类 时钟管理类
程序 程序 程序
磁盘
return
Linux编程
多任务下的程序设计环境
return
程序
程序 用户空间 系统空间 (内核)
程序
磁盘
8
Linux编程
1-2 程序设计思想
return
一般用户的编程思想 系统编程思想
view
9
一般用户的编程思想
系统编程思想
思考角度
关注点
纯粹使用者的角度
① 功能的实现
Linux编程
第6章 常用开发工具
1
Linux编程
本章学习内容
补充1: 系统编程基础
补充2: linux中程序文件
编译工具gcc
调试工具gdb 维护工具make
2
Linux编程
本章学习目标
了解系统编程思想 掌握Linux中程序文件的组成、存储位置、命名约定
掌握编译工具gcc的常用选项
指定连接程序搜索库文件的路径dir。若在dir上搜索不到,再 搜索标准位置 (/lib, /usr/lib)
指定连接时搜索名为library的库。 在目标代码中加入供gdb调试使用的信息
24
Linux编程
gcc使用实例
实例1: 使用选项-o指定可执行文件名称 实例2: 选项-c 分别编译
return
31
Linux编程
程序维护中存在的问题
file1.c
#include “a.h” void main() … #include “a.h” #include “b.h” … #include “b.h” #include “c.h” … view
return
a.h b.h c.h
file2.c
file3.c
2-3 程序文件: linux .vs. windows
linux shell scripts windows .bat, .cmd .exe .obj 目标模块 备注
return
exectables
.o
.sa
.so
.lib
.dll
静态库
共享库(动态库)
linux系统和window系统中的文件类比
20
了解make工具的工作原理,练习其基本使用方式
38
本章学习建议:
教材的第5章、第6章、第7章在内容上存在很多交叉和关联。第5章 介绍的是操作系统内核的工作原理,第6章介绍的是linux下程序的编译工 具、调试工具和维护工具,第7章介绍的是环境编程。要进行环境编程, 需要掌握必要的编译调试工具,而对操作系统内核的工作原理了解得越 深入越有助于环境编程的开发。 所以,把三章内容结合在一起学习会比较好。这一章虽是介绍常用工 具,可是里面关于用户空间、核心空间的内容在第5章5.1节和第7章的7.1 节都有相关介绍。另外,关于系统调用和函数库在7.1节也有较为详细的 解释。建议在结合课件复习这一章内容的时候,结合第5章和第7章的相 关内容来理解和体会。这样你会对内核空间、用户空间、系统调用、函 数库等有更多的认识。 工具的学习则需要在编程实践中去摸索和熟悉。
a.h b.h c.h
file2.c
file3.c
file: file1.o file2.o file3.o
gcc file1.o file2.o file3.o -o file file1.o: file1.c a.h gcc -c file1.c file2.o: file2.c a.h b.h gcc -c file2.c file3.o: file3.c b.h c.h
系统调用与库函数的关系
return
Linux编程
2. Linux程序文件
next part
go go go
linux程序文件的组成
linux库文件的命名约定
程序文件: linux .vs. windows
17
Linux编程
2-1 linux程序文件的组成
return
组成
一般存放位置
功能
Linux编程
3. 编译工具gcc
next part
gcc简介 gcc的工作过程 gcc的常用选项
go go
go
go
gcc使用实例
21
Linux编程
gcc简介
return
gcc,全称GNU Compiler Collection,是目前Linux平台上
最常用的C语言编译系统,符合ANSI C标准。能够编译用C、
规则
33
Linux编程
make工具使用实例
实例1: 实例2: 教材P197 实例3: 教材P204 习题6.9
go
return
34
file1.c
#include “a.h” void main() … #include “a.h” #include “b.h” … #include “b.h” #include “c.h” …
选项格式 -o file -c -Idir -Ldir -llibrary -g 功能 指定最后生成的可执行文件名为file。默认为a.out 只生成目标文件,不进行链接。用于对源文件分别编译
return
指定搜索头文件的路径dir。若在dir上搜索不到,再搜索标准 位置 (/usr/include)
操作系统管理的角度
① 功能实现 ② 性能、实际运行效果
知识需求
① 基本的编程知识和编程工具 ① 基本的编程知识和编程工具 ② 计算机系统的内部结构和操作 系统的管理模式 ③ 程序在系统内部执行的原理 实现功能编码,但实际运行效 果、效率可能存在不足 不仅实现功能编码,还力求程序 与系统的融合与协调
程序效果
29
Linux编程
gdb使用实例
① gdb的启动与退出 ② gdb帮助信息的查看 ③ 设置断点与跟踪调试
return
(操作演示)
30
Linux编程
5. 维护工具make
next part
go go
程序维护中存在的问题 make工具简介 make工具使用实例
go
go
关于make工具的相关说明
理想中的程序设计环境
实例分析:
#include <stdio.h> void main() { int c; while ((c=getchar())!=EOF) putchar(c); }
return
next
6
① 单用户、单任务
putchar() 程序 getchar()
② 多用户、多任务
mess!
application header files libraries static shared
/usr/bin /user/local/bin 存放一些executables或scripts /opt /usr/include /lib /usr/lib 存放一些常量的定义、函数的声明等 存放可重用的、预编译的函数集合
28
Linux编程
gdb常用命令
return
命令 help quit backtrace shell
功能 查看gdb帮助信息 退出gdb调试环境 打印函数调用栈信息 临时执行shell命令 list
命令
功能 显示源文件代码 设置断点 查看数据(变量等) 清除断点
break print clear
return
要在编译源程序的时候使用-g选项,以便在目标代码中加入
调试用的各种信息。
27
Linux编程
debug .vs. test
(1) 不同点: test 目的是验证程序在所有可能条件下的运行情况
return
debug 目的是跟踪错误的具体环节。
(2) 相关点: 很多bug是在test的时候被发现的。然后需要通过 debug进行跟踪调试。
gcc -c file3.c
return
Linux编程
关于make工具的相关说明
(1) makefile文件一般与程序文件放在同一目录下。
return
(2) 编写makefile文件时,rules(规则)部分必须以Tab开头,不
能是space。 (3) makefile文件的默认名称是makefile或Makefile。若采用其 它名称,则需要使用选项-f。例如: make file -f Makefile1
C++和Objective-C等语言编写的程序。
22
Linux编程
gcc的工作过程 (P178-179)
c/c++源文件
return
预处理
编译
汇编
连接
可执行文件
当调用gcc时,通常情况下会完成整个过程。但是,你可以通过 控制选项,使其处理过程停留在某一中间环节。
23
Linux编程
gcc的常用选项
return
进程通信类
12
Linux编程
库函数
return
很多编程语言都提供函数库供用户使用。换言之,库函数
是编程语言提供给用户的接口。
13
Linux编程
系统调用 .vs. 库函数
(1) 从使用者的角度
return
用户使用二者编程时,在使用方式上无本质差别。
(2) 从系统设计者的角度 二者实现方法和实现技术层面不同。 系统调用是操作系统提供的最基本的服务。相对于库函数,系 统调用更接近于计算机系统的底层。
(4) 当项目规模比较大时,可以为项目的不同部分编写不同的
makefile文件。
36
• 启动: gdb file1
Linux编程
系统编程基础
linux中程序文件
• 常用命令 • 选项-o 例: gcc file1.c -o file1 • quit 程序 程序 gcc 程序 • 选项-c 例: -c file1.c • help • 编写makefile文件 • 选项-g 例: gcc file1.c -o (系统编程思想△) file1 -g • list, break, clear, print, display • 依赖关系 用户空间
文档推荐
03173软件开发工具2013年10月份真题及答案
页数:6
软件开发工具-知识点整理
页数:5
软件开发工具推荐清单
页数:16
软件开发工具与环境(1)
页数:40
软件开发工具-知识点整理
页数:4
几种常用软件开发工具比较
页数:5
软件开发工具与试题答案最新
页数:5
自考03173软件开发工具10月试题及答案word版本
页数:14
软件开发工具模拟试卷(含答案)
页数:11
(完整版)软件开发工具历年填空真题
页数:6
最新文档
品味艺术作文指导
【2018-2019】201X—201X年度学生处工作计划-实用word文档 (4页)
上海市七年级上册地理 期末试卷(含答案)
实用的活动策划集锦九篇.doc
检车那些事
2014年6月广东省普通高中学业水平考试 思想政治试卷
2018年高一物理试卷
新北师大版小学数学一年级下册《回收废品》教案及反思
九年级英语第一次月考试卷分析
必练书目