【精品】Linux下C编程基础精品ppt课件.ppt
《【精品】Linux下C编程基础精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】Linux下C编程基础精品ppt课件.ppt(88页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Linux下C编程基础LinuxLinux文化文化WindowsWindows能够做到的,能够做到的,LinuxLinux也能够做也能够做到到,LinuxLinux不能做到的就是人类不需要的不能做到的就是人类不需要的LinuxLinux编程概述编程概述LinuxLinux下下编辑器编辑器的使用的使用LinuxLinux c编译器编译器gccLinuxLinux下的调试器下的调试器gdb例:例:WindowsWindows下的一个简单下的一个简单c c程序程序include include main()main()char c;char c;c=getchar();c=getchar();put
2、char(c);putchar(c);QuestionQuestionv你的你的windowswindows下的下的c c程序,移植到程序,移植到linuxlinux下能下能否运行?否运行?v涉及到的知识点:涉及到的知识点:程序的形成过程程序的形成过程 系统调用系统调用v准确的说法:必须满足一定条件,才可准确的说法:必须满足一定条件,才可以移植。以移植。v与系统调用有关。与系统调用有关。v可以移植必须满足的条件:源代码中不可以移植必须满足的条件:源代码中不涉及到与操作系统有关的系统调用。涉及到与操作系统有关的系统调用。v系统调用函数与操作系统相关,是操作系统的一系统调用函数与操作系统相关,是操
3、作系统的一部分,不同的操作系统所使用的系统调用不一样。部分,不同的操作系统所使用的系统调用不一样。v一般来说,如果两个操作系统差异很大,系统调一般来说,如果两个操作系统差异很大,系统调用函数的可移植性就不高。例如用函数的可移植性就不高。例如 Windows Windows 采用采用了系统调用的应用程序不能直接在了系统调用的应用程序不能直接在 Linux Linux 下编下编译运行。系统调用函数很多情况下需要访问系统译运行。系统调用函数很多情况下需要访问系统特殊资源,使用系统调用时,该程序的状态将从特殊资源,使用系统调用时,该程序的状态将从用户态切换到内核态。用户态切换到内核态。不同的c标准vA
4、NSI CANSI C标准标准vISO CISO C标准标准vPOSIX CPOSIX C标准标准vSVIDSVID标准标准vXPGXPG标准标准Linux得以流行的原因之一得以流行的原因之一【遵循遵循POSIXPOSIX标准标准】vPOSIX POSIX 表示可移植操作系统接口表示可移植操作系统接口(Portable Operating System Portable Operating System InterfaceInterface),该标准由),该标准由IEEEIEEE制定,并由国制定,并由国际标准化组织(际标准化组织(ISOISO)接受为国际标准。接受为国际标准。POSIX CPO
5、SIX C标准标准vPOSIX POSIX 标准最初是由标准最初是由 IEEE IEEE 开发的标准族,部分开发的标准族,部分已经被已经被 ISO ISO 接受为国际标准。接受为国际标准。vPOSIX.1POSIX.1和和POSIX.2 POSIX.2 分别定义了兼容操作系统的分别定义了兼容操作系统的 C C 语言系统接口以及工具标准。这两个标准是通常语言系统接口以及工具标准。这两个标准是通常提到的标准。提到的标准。v表表 1 1 所示为所示为 26 26 项项 POSIX POSIX 标准定义的头文件,标准定义的头文件,表表 2 2 所示为所示为 26 26 项项 POSIX POSIX 标
6、准定义的标准定义的 XSI XSI 扩展扩展头文件,表头文件,表 3 3 所示为所示为 8 8 项项 POSIX POSIX 标准定义的可标准定义的可选头文件。选头文件。vLinuxLinux对对ansi cansi c和和posix cposix c都是支持的,并都是支持的,并且两种标准中都提供了相应的库函数和系且两种标准中都提供了相应的库函数和系统调用。统调用。v但是但是windowswindows只支持只支持ansi cansi c标准。标准。vlinuxlinux下的系统调用一般选择符合下的系统调用一般选择符合posixposix标标准的系统调用,这种系统调用在准的系统调用,这种系统调
7、用在unixunix族操族操作系统中都可以使用。作系统中都可以使用。Linux cLinux c编程的要领编程的要领v一些简单的程序调用一些简单的程序调用c c提供的函数库就足提供的函数库就足够了,但是要做出功能强大的应用程序,够了,但是要做出功能强大的应用程序,就必须借助操作系统提供的系统调用,所就必须借助操作系统提供的系统调用,所以,以,linuxlinux下的下的c c开发主要是要求你要掌握开发主要是要求你要掌握linuxlinux系统,包括它的运行机制,可用系统,包括它的运行机制,可用apiapi,一些操作模式等等。,一些操作模式等等。vc c强大的功能和它的可移植性让它能在各强大的功
8、能和它的可移植性让它能在各种硬件平台上游刃自如。种硬件平台上游刃自如。CYGWINvCygwin是许多自由软件的集合,最初由Cygnus Solutions开发,用于各种版本的Microsoft Windows上,运行类UNIX系统。vCygwin的主要目的是通过重新编译,将POSIX系统(例如Linux,BSD,以及其他Unix系统)上的软件移植到Windows上。vCygwin包括了一套库,该库在Win32系统下实现了POSIX系统调用的API;还有一套GNU开发工具集(比如GCC、GDB)。MinGWvMinGW(Minimalist GNU for Windows),又称mingw32
9、,是将GCC编译器和GNU Binutils移植到Win32平台下的产物,包括一系列头文件(Win32API)、库和可执行文件。vMinGW是从Cygwin(1.3.3版)基础上发展而来。MSYSvis a Bourne Shell command line interpreter system.Offered as an alternative to Microsofts cmd.exe,this provides a general purpose command line environment,which is particularly suited to use with MinGW
10、,for porting of many Open Source applications to the MS-Windows platform;a light-weight fork of Cygwin-1.3,it includes a small selection of Unix tools,chosen to facilitate that objective.vMSYS is a collection of GNU utilities such as bash,make,gawk and grep to allow building of applications and prog
11、rams which depend on traditionally UNIX tools to be present.v It is intended to supplement MinGW and the deficiencies of the cmd shell.LinuxLinux编程概述编程概述LinuxLinux下下编辑器编辑器的使用的使用 LinuxLinux c编译器编译器gccLinuxLinux下的调试器下的调试器gdbvLinuxLinux下的下的 C C 语言程序设计与在其他环境中的语言程序设计与在其他环境中的 C C 程序设计一样,主要涉及到编辑器、编译链接器、程序设
12、计一样,主要涉及到编辑器、编译链接器、调试器及项目管理工具。调试器及项目管理工具。(1 1)编辑器)编辑器vLinux Linux 下的编辑器就如下的编辑器就如 Windows Windows 下的下的 wordword、记、记事本等一样,完成对所录入文字的编辑功能。事本等一样,完成对所录入文字的编辑功能。Linux Linux 中最常用的编辑器有中最常用的编辑器有 ViVi(VimVim)和)和 EmacsEmacs,着重介绍,着重介绍 ViVi。(2 2)编译链接器)编译链接器v编译是指源代码转化生成可执行代码的过程,编译是指源代码转化生成可执行代码的过程,它所完成工作主要如图所示。它所完
13、成工作主要如图所示。v在在 Linux Linux 中,最常用的编译器是中,最常用的编译器是 Gcc Gcc 编译器。编译器。它是它是 GNUGNU推出的功能强大、性能优越的多平台推出的功能强大、性能优越的多平台编译器,其执行效率与一般的编译器相比平均编译器,其执行效率与一般的编译器相比平均效率要高效率要高20%20%30%30%,堪称为,堪称为 GNU GNU 的代表作品之的代表作品之一。一。(3 3)调试器)调试器v在编程的过程当中,往往调试所消耗的时间远远在编程的过程当中,往往调试所消耗的时间远远大于编写代码的时间。因此,有一个功能强大、大于编写代码的时间。因此,有一个功能强大、使用方便
14、的调试器是必不可少的。使用方便的调试器是必不可少的。vGdb Gdb 是绝大多数是绝大多数 Linux Linux 开发人员所使用的调试开发人员所使用的调试器,它可以方便地设置断点、单步跟踪等,足以器,它可以方便地设置断点、单步跟踪等,足以满足开发人员的需要。满足开发人员的需要。(4 4)项目管理器)项目管理器vLinux Linux 中的项目管理器中的项目管理器“makemake”有些类似于有些类似于 Windows Windows 中中 Visual C+Visual C+里的里的“工程工程”,它是一,它是一种控制编译或者重复编译软件的工具。种控制编译或者重复编译软件的工具。进入进入 Vi
15、VivLinux Linux 系统提供了一个完整的编辑器家族系系统提供了一个完整的编辑器家族系列,如列,如 EdEd、ExEx、Vi Vi 和和 Emacs Emacs 等。等。v按功能它们可以分为两大类:行编辑器(按功能它们可以分为两大类:行编辑器(EdEd、ExEx)和全屏幕编辑器()和全屏幕编辑器(ViVi、EmacsEmacs)。)。v行编辑器每次只能对一行进行操作,使用起行编辑器每次只能对一行进行操作,使用起来很不方便。来很不方便。v而全屏幕编辑器可以对整个屏幕进行编辑,而全屏幕编辑器可以对整个屏幕进行编辑,用户编辑的文件直接显示在屏幕上,从而克用户编辑的文件直接显示在屏幕上,从而克
16、服了行编辑的那种不直观的操作方式,便于服了行编辑的那种不直观的操作方式,便于用户学习和使用,具有强大的功能。用户学习和使用,具有强大的功能。vVi Vi 是是 Linux Linux 系统的第一个全屏幕交互系统的第一个全屏幕交互式编辑程序,它从诞生至今一直得到广式编辑程序,它从诞生至今一直得到广大用户的青睐,历经数十年仍然是人们大用户的青睐,历经数十年仍然是人们主要使用的文本编辑工具。主要使用的文本编辑工具。Vi Vi 的模式的模式(1 1)命令行模式)命令行模式v用户在用用户在用 Vi Vi 编辑文件时,最初进入的为一般模编辑文件时,最初进入的为一般模式。在该模式中可以通过上下移动光标进行式
17、。在该模式中可以通过上下移动光标进行“删删除字符除字符”或或“整行删除整行删除”等操作,也可以进行等操作,也可以进行“复制复制”、“粘贴粘贴”等操作,但无法编辑文字。等操作,但无法编辑文字。(2 2)插入模式)插入模式v只有在该模式下,用户才能进行文字编辑输入,只有在该模式下,用户才能进行文字编辑输入,用户按用户按ESCESC键回到命令行模式。键回到命令行模式。(3 3)底行模式)底行模式v在该模式下,光标位于屏幕的底行。用户可以进在该模式下,光标位于屏幕的底行。用户可以进行文件保存或退出操作,也可以设置编辑环境,行文件保存或退出操作,也可以设置编辑环境,如寻找字符串、列出行号等。如寻找字符串
18、、列出行号等。Vi Vi 的基本流程的基本流程v(1 1)进入)进入 ViVi,即在命令行下键入,即在命令行下键入 Vi helloVi hello(文件名)。此时进入的是命令行模式,光标位(文件名)。此时进入的是命令行模式,光标位于屏幕的上方,如图所示。于屏幕的上方,如图所示。v(2 2)在命令行模式下键入)在命令行模式下键入 i i 进入到插入模式,进入到插入模式,如图所示。可以看出,在屏幕底部显示有如图所示。可以看出,在屏幕底部显示有“插入插入”表示插入模式,在该模式下可以输入文字信息。表示插入模式,在该模式下可以输入文字信息。v(3 3)最后,在插入模式中,输入)最后,在插入模式中,输
19、入“EscEsc”,则,则当前模式转入命令行模式,并在底行行中输入当前模式转入命令行模式,并在底行行中输入“:wq:wq”(存盘退出)进入底行模式,如图所(存盘退出)进入底行模式,如图所示。示。v这样,就完成了一个简单的这样,就完成了一个简单的 Vi Vi 操作流程:命操作流程:命令行模式令行模式插入模式插入模式底行模式。由于底行模式。由于 ViVi在在不同的模式下有不同的操作功能,因此要时刻不同的模式下有不同的操作功能,因此要时刻注意屏幕最下方的提示,分清所在的模式。注意屏幕最下方的提示,分清所在的模式。vVi的各模式功能键的各模式功能键(1 1)命令行模式常见功能键如表所示。)命令行模式常
20、见功能键如表所示。(2 2)插入模式的功能键只有一个,也就是)插入模式的功能键只有一个,也就是 Esc Esc 退出到命令行退出到命令行模式。模式。(3 3)底行模式常见功能键如表所示。)底行模式常见功能键如表所示。初探初探 EmacsEmacsvEmacs Emacs 不仅仅是一款功能强大的编译器,而且是一款融合不仅仅是一款功能强大的编译器,而且是一款融合编辑、编译、调试于一体的开发环境。编辑、编译、调试于一体的开发环境。v emacsemacs文文本本编编辑辑器器可可以以用用来来编编辑辑文文本本、剪剪辑辑和和粘粘贴贴文文本本内内容容、提提供供个个人人日日历历和和日日记记,阅阅读读Usene
21、tUsenet新新闻闻、发发送送电电子子邮邮件件,同同时时还还是是一一种种程程序序语语言言解解释释器器,可可以以编编辑辑C C、LispLisp、TevTev源源代代码码文文件件、以及以及LinuxLinux的的ShellShell。v emacsemacs是由是由 Richard StallmanRichard Stallman发明的,这位发发明的,这位发明者还创建了自由软件基金会(简称明者还创建了自由软件基金会(简称FSFFSF)。最)。最初的初的emacsemacs是用来编辑宏命令的,现已进一步扩是用来编辑宏命令的,现已进一步扩充为充为 UNIXUNIX用户中装机用户数量最大、功能最齐用
22、户中装机用户数量最大、功能最齐全的免费文本编辑器了。全的免费文本编辑器了。vEmacs Emacs 的使用和的使用和 Vi Vi 截然不同。截然不同。EmacsEmacs只有一种只有一种模式,也就是编辑模式,而且它的命令全靠功能模式,也就是编辑模式,而且它的命令全靠功能键完成。因此,功能键也就相当重要了。键完成。因此,功能键也就相当重要了。v但但 Emacs Emacs 却还使用一个不同却还使用一个不同 Vi Vi 的的“模式模式”,它的它的“模式模式”是指各种辅助环境。比如,当编辑是指各种辅助环境。比如,当编辑普通文本时,使用的是普通文本时,使用的是“文本模式文本模式”(Text Text
23、ModeMode),而当他们写程序时,使用的则是如),而当他们写程序时,使用的则是如“c c”模式模式”“Shell Shell 模式模式”等。等。vEmacs Emacs 的工作窗口分为上下两个部分,上部为编辑窗口,底部的工作窗口分为上下两个部分,上部为编辑窗口,底部为命令显示窗口,用户执行功能键的功能都会在底部有相应的为命令显示窗口,用户执行功能键的功能都会在底部有相应的显示,有时也需要用户在底部窗口输入相应的命令。显示,有时也需要用户在底部窗口输入相应的命令。LinuxLinux编程概述编程概述LinuxLinux下下编辑器编辑器的使用的使用 LinuxLinux c编译器编译器gccL
24、inuxLinux下的调试器下的调试器gdbvGcc Gcc 编译器编译器vGNU CCGNU CC(简称为(简称为 GccGcc)是)是 GNU GNU 项目中符合项目中符合 ANSI C ANSI C 标准的编译系统,能够编译用标准的编译系统,能够编译用 C C、C+C+和和 Object C Object C 等语言编写的程序。等语言编写的程序。vGcc Gcc 不仅功能强大,而且可以编译如不仅功能强大,而且可以编译如 C C、C+C+、Object CObject C、JavaJava、FortranFortran、PascalPascal、Modula-Modula-3 3 和和 A
25、da Ada 等多种语言。等多种语言。vGcc Gcc 是一个交叉平台编译器,它能够在当前是一个交叉平台编译器,它能够在当前 CPU CPU 平台上为多种不同体系结构的硬件平台开平台上为多种不同体系结构的硬件平台开发软件,因此尤其适合在嵌入式领域的开发编发软件,因此尤其适合在嵌入式领域的开发编译。译。v下表是下表是 Gcc Gcc 支持编译源文件的后缀及其解释。支持编译源文件的后缀及其解释。Gcc Gcc 编译流程解析编译流程解析Gcc Gcc 的编译流程分为了的编译流程分为了 4 4 个步骤,分别为:个步骤,分别为:v预处理(预处理(Pre-ProcessingPre-Processing)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 Linux 编程 基础 ppt 课件
限制150内