- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 UNIX系统编程基础
第6章 Unix系统编程基础 理解:程序设计环境(用户空间和系统空间) 理解:基于操作系统的程序设计(系统调用) 掌握: C/C++编辑器 GCC 掌握: GNU make和makefile的编写规则 了解 :C/C++调试器 GDB 了解:常用系统调用及库函数的使用方法 了解:常用函数库glib的使用 了解:程序管理软件SCCS\CVS 6.1 程序设计环境 理想的程序设计环境 单任务环境-单用户、单进程 多任务环境下的程序设计 用户程序不能直接控制系统的硬件设备 用户程序通过操作系统来控制系统的资源 存储中存在:用户程序空间和系统空间 6.2 基于操作系统支持的程序设计 建立系统编程的思想 站在资源管理者的角度来分析问题,充分考虑系统为用户程序提供哪些服务和资源,以实现对系统资源的有效利用——嵌入式系统 系统调用 用户程序通过系统调用实现对系统内核功能的使用及对各种硬件资源的访问 了解:系统调用的使用方法 输入、输出控制类 进程、线程管理类:创建、终止、同步、互斥等 内存及辅存管理类 6.2 基于操作系统支持的程序设计 设备控制类 本地进程通信管理类 网络进程通信管理类 系统调用与库函数的关系 系统调用是操作系统层面提供的服务,库函数是高级语言提供的服务 6.3 在UNIX中完成C程序开发 编程语言 低级语言 机器语言: 能够由机器直接执行。 汇编语言: 包含一些助记符,需要由汇编程序将其翻译成机器语言。 高级语言:需要由编译程序和解释语言将其翻译成机器语言 COBOL、BASIC、C/C++、PASCAL、FORTRAN、JAVA 6.3 在UNIX中完成C程序开发 建立可执行程序的步骤 建立源文件 建立目标文件 建立可执行文件 源代码 目标代码:由编译程序和解释程序把源代码翻译成机器能够理解的语言。目标代码不是可执行文件,它还缺少库文件。 可执行代码可能包含其它程序代码,由链接程序将目标代码和其它程序代码链接在一起,形成完整的可执行程序 6.3 在UNIX中完成C程序开发 区别编译程序和解释程序 编译程序:把高级语言翻译成机器语言。它一次编译所有的程序代码,在编译完成之前没有任何结果反馈; 解释程序:把高级语言翻译成机器语言。它一次翻译一行代码,并立即将执行结果反馈。 6.3.1 GCC:C/C++ 编译器 GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,gcc编译器能将C、C++语言源程序、汇编语言和目标程序编译、链接成可执行文件,以下是gcc支持编译的一些源文件的后缀及其解释(点击) 使用gcc将C源代码文件生成可执行文件,需要经历4个相关的步骤:预处理,编译,汇编,链接 gcc支持编译的源文件后缀 GCC的使用方法 gcc的基本用法: gcc [选项] [文件名列表] gcc的选项说明: -c 只编译并生成目标文件(.o) -g 生成调试信息 -o file 指定生成的文件名 gcc命令的常用选项 几个简单的C程序实例 hello.c gcc -o hello hello.c ./hello 计算阶乘的程序 将多个源程序编译成一个可执行文件 gcc -o factorial factorial_main.c factorial.c ./ factorial n 编译一个C++程序 GCC编译器可通过后缀名判断c(.c)或c++程序(.C/.cpp),使用g++进行编译 g++ -o hello_C hello.cpp 改正错误及重定向标准错误 如果源程序有误,希望将错误信息重定向到某个文件,以便于逐一纠错,可使用如下语句 gcc hello_error.c -o hello_error 2error 重定向标准错误 1 file: 标准输出设备的重定向 2 file: 标准错误输出的重定向 6.3.2 GNU make和makefile文件 GNU make makefile 基本结构 makefile 变量 GNU make 的主要预定义变量 隐含规则 makefile 范例 运行 make GNU make 利用 make 工具来自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。 make 工具通过一个称为 makefile 的文件来完成并自动维护编译工作。makefile 需要按照某种语法进行编写,其中说明了如何编译各个源文件并链接生成可执行文件,并定义了源文件之间的依赖关系。 当修改了其中某个源文件时,如果其他源文件依赖于该文件,则也要重新编译所有依赖该文件的源文件。 GNU make 默
文档评论(0)