LINUX下的C语言编程.ppt
LINUX系统简介系统简介主讲:黄鸿第一节第一节 LINUX概述概述本节将主要介绍如下内容l什么是LinuxlLinux的优点lLinux的起源lLinux的特点lLinux的应用程序什么是什么是Linux?Linux是一种主要适用于个人计算机的类似于Unix风格的操作系统操作系统。它的独特之处在于不受任何商品化软件的版权制约,全世界都能免费、自由使用。它支持多用户、多进程、多线程、实时性较好、功能强大而稳定。它的出现为我们带来了计算机上突破性的创举。什么是什么是Linux?Linux是互联网上的独特现象。虽然它是由学生的业余爱好发展而来,但是现在它已经成为最为流行的免费操作系统。没有版权和允许自由使用并不意味着这个系统不专业。事实上,这个系统是在科研和学术的环境下开发出来的,无数计算机专业人士和经验丰富的黑客们不断改进和维护着这个系统。Linux的的优点优点 Linux操作系统是稳定和富有竞争力的,相对于Windows操作系统令人头痛的漏洞百出,Linux是稳定而有效的;相对于Unix操作系统的庞大,Linux显得精致而且小巧。Linux对硬件配置的要求相对较低,显得更加平民化。另外Linux的源代码全部公开,任何人都能按照自己的意愿对其进行修改,使它成为自己个性化的操作系统。LINUX的起源的起源l最初的Linux 核心程序是由一名芬兰赫尔辛基的大学生Linus Torvalds编写的。1 9 9 0年,他还在读大学本科计算机专业的时候,因为不满学校的服务器一次只能接待1 6个人连网,于是“一气之下,干脆自己掏钱买了一台PC”。lL i n u s在自己的Intel 386 PC上,利用Tanenbaum教授自行设计的微型UNIX操作系统Minix为开发平台,开发了属于他自己的第一个程序。l第二年,他完成了令他誉满全球的操作系统Linux 的最初内核。l第三年,Linus把这一软件奉献给自由软件基金会(Free Software Foundation,简称F S F)的GNU 计划,并公布了全部源代码,使得任何人都可以从网上下载、分析、修改、添加新功能,甚至出售赢利。l现在,通过Internet,遍及世界各地的计算机高手把一个随时都有可能被遗弃的萌芽,扶植成了一个计算机领域中任何人都无法忽视的力量。LINUX商业发行版商业发行版l现在通常所说得Linux系统,是包括Linux操作系统内核在内的、包含有大量自由软件的操作系统套件,其中包括了各种各样的系统命令、开发工具、窗口系统以及大量的自由软件。这种Linux套件,通常有商业公司打包发行,称为“Linux商业发行版”。l常见的如:RedHat Linux,TurboLinux,Slackware Linux,红旗Linux等。LINUX的特点的特点l全面的多任务和真正的3 2位操作系统。Linux和其他UNIX系统一样是真正的多任务系统,它允许多个用户同时在一个系统上运行多道程序。Linux还是真正的32位操作系统,它工作在Intel 80386 和后来的Intel 处理器的保护模式下。lX Window 系统。X Window 是UNIX 平台上的事实工业标准。XFree86 则是Linux平台上的X Window 系统。X Window 系统是功能强大的图形界面,支持多种应用程序。LINUX的特点的特点l支持TCP/IP协议。在Linux 系统中,通过Ethernet 可以连接到Internet 或当地的局域网。使用SLIP(Serial Line Internet Protocol)或PPP(Point to Point Protocol),通过电话线和调制解调器也可连到Internet上。lLinux 内核中的代码均为自由代码。Linux上的大部分程序是自由软件。这些软件是在自由软件基金会的GNU计划下开发的。来自世界各地的黑客、程序员,甚至商业公司也加入了Linux 软件开发的行列。LINUX的特点的特点lLinux 符合IEEE POSIX.1标准。Linux 特别注重可移植性。lLinux支持多种硬件平台。从低端的Intel 6直到高端的超级并行计算机系统,都可以运行Linux系统。lLinux 系统网络功能强大。不仅仅因为Linux 系统内核中紧密地集成了网络功能和有大量的网络应用程序,更因为Linux系统在超强网络需求下表现出的令人惊奇的健壮性。注:POSIX(Portable Operating System Interface)表示可移植操作系统接口,为了提高UNIX环境下应用程序的可移植性。如何获得如何获得LINUXl现在人们可以买到各种不同的Linux 发布,所谓Linux 发布也就是各公司把Linux源代码编译在一起,再加上自己特殊的软件和图形界面。有些发布可以从网上下载,有些可以通过光盘的方式购买。Linux的版本的版本l在1994年3月14日Linux版本1.0发行后,Linux发行团体采用了统一的版本号管理模式。l版本1.x.y和2.x.y。如:2.4.10,2.6.3。l在x是偶数时,表示稳定版本;x是奇数时,表示为开发者使用的测试版。ly表示补丁级别,当某一个错误被解决之后,此级别号也增加。lLinux内核最新版本信息http:/www.kernel.org/上获得。Linux的内核(的内核(Kernel)l术语“内核”指的是核心的Linux操作系统,这个程序使一台PC成为一台Linux PC。l内核补丁就表示对于Linux操作系统本身的修正程序。Linux的的应用程序应用程序l文本和文字处理程序lX Windowsl编程语言lInternet工具l数据库第二节第二节 外壳(外壳(shell)及常见命令及常见命令lLinux 启动后,给出login 命令,等待用户登录。lLogin:lPassword:l如果是正确的用户名和密码,那么你就会进入Linux 的外壳,外壳给出命令提示符,等待你输入命令(不要随意以root身份登录,以避免对系统造成意外的破坏)。l使用logout命令退出外壳。Linux系统的外壳系统的外壳l外壳是一种命令解释器,它提供了用户和操作系统之间的交互接口。外壳是面向命令行的,而X Window 则是图形界面。在命令行输入命令,外壳进行解释,然后送往操作系统执行。l外壳可以执行Linux 的系统内部命令,也可以执行应用程序。还可以利用外壳编程,执行复杂的命令程序 bash(大多数Linux系统的缺省外壳)特点如下:l补全命令行。当你在bash 命令提示符下输入命令或程序名时,你不必输全命令或程序名,按Tab 键,bash将自动补全命令或程序名。l历史命令。bash 能自动跟踪你每次输入的命令,并把输入的命令保存在历史列表缓冲区。l管道。管道用于将一系列的命令连接起来。也就是把前面的命令的输出作为后面的命令的输入。l作业控制。作业控制是指在一个作业执行过程中,控制执行的状态。你可以挂起一个正在执行的进程,并在以后恢复该进程的执行。外壳的常用命令外壳的常用命令l更改帐号密码l语法:passwdlOld password:lNew password:lRetype new password:开机关机命令开机关机命令l开机输入帐户:root 密码:或帐户:jack 密码:l关机:shutdown now/马上关机 shutdown 12:00/12:00关机1、文件或目录处理l语法:ls-atFlgR namelname:文件名或目录名。例如:lls 列出目前目录下的文件名。lls-a 列出包括以开始的隐藏文件的所有文件名。lls-t 依照文件最后修改时间的顺序列出文件名。lls-F 列出当前目录下的文件名及其类型。以/结尾表示为目录名,以*结尾表示为可执行文件,以 结尾表示为符号连接。lls-l 列出目录下所有文件的权限、所有者、文件大小、修改时间及名称。lls-lg 同上,并显示出文件的所有者工作组名。lls-R 显示出目录下以及其所有子目录的文件名。2、改变工作目录l语法:cd namelname:目录名、路径或目录缩写。例如:lcd 改变目录位置至用户登录时的工作目录。lcd dir1 改变目录位置至d i r 1目录下。lcd user 改变目录位置至用户的工作目录。lcd.改变目录位置至当前目录的父目录。lcd./user 改变目录位置至相对路径user 的目录下。lcd/./.改变目录位置至绝对路径的目录位置下。lcd 改变目录位置至用户登录时的工作目录。3、复制文件l语法:cp-r 源地址 目的地址例如:lcp file1 file2 将文件file1 复制成f i l e 2。lcp file1 dir1 将文件file1 复制到目录dir1 下,文件名仍为f i l e 1。lcp/tmp/file1.将目录/tmp 下的文件file1 复制到当前目录下,文件名仍为f i l e 1。lcp/tmp/file1 file2 将目录/tmp 下的文件file1 复制到当前目录下,文件名为f i l e 2。lcp-r dir1 dir2 复制整个目录。4、移动或更改文件、目录名称l语法:mv 源地址 目的地址例如:lmv file1 file2 将文件f i l e 1更名为f i l e 2。lmv file1 dir1 将文件f i l e 1移到目录dir1 下,文件名仍为f i l e 1。lmv dir1 dir2 将目录dir1 更改为目录d i r 2。5、建立新目录l语法:mkdir 目录名例如:lmkdir dir1 建立一新目录d i r 1。6、删除目录l语法:rmdir 目录名 或 rm 目录名例如:lrmdir dir1 删除目录d i r 1,但dir1 下必须没有文件存在,否则无法删除。lrm-r dir1 删除目录d i r 1及其子目录下所有文件。7、删除文件l语法:rm 文件名例如:lrm file1 删除文件名为file1 的文件。lrm file?删除文件名中有五个字符且前四个字符为file 的所有文件。lrm f*删除文件名中以f 为字首的所有文件。8、查看文件内容l语法:cat 文件名例如:lcat file1 以连续显示方式,查看文件名file1 的内容。9、列出当前所在的目录位置l语法:pwd10、分页查看文件内容l语法:more 文件名或cat 文件名|more例如:lmore file1 以分页方式查看文件名file1 的内容。lcat file1|more 以分页方式查看文件名file1 的内容。lLess 与more功能相同,区别在于less可以向上翻页,而more支持向下翻页。11、查看目录所占磁盘容量l语法:du-s 目录例如:ldu dir1 显示目录dir1 的总容量及其子目录的容量(以KB 为单位)。ldu-s dir1 显示目录dir1 的总容量。12、改变文件或目录的读、写、执行权限l语法:chmod-R mode namelname:文件名或目录名。lmode:3个8位数字或r w x的组合。r-read(读),w-write(写),x-execute(执行),u-user(当前用户),g-group(组),o-other(其他用户)。l例如:chmod 700 file1 对于文件file1,设定只有所有者可以读、写和执行的权利。13、改变文件或目录的所有权l语法:chown-R 用户名namelname:文件名或目录名。例如:lchown user file1 将文件file1 改为用户user 所有。lchown-R user dir1 将目录dir1及其子目录下面的所有文件改为用户user所有。14、查寻文件或命令的路径l语法:find search-path-name filename-print 搜寻指定路径下某文件的路径。l例:find/-name file1-print 自根目录下寻找文件file1 的路径。lgrep:在指定的文件中搜索包含指定格式字符串的行:grep abcde /usr/locale/include/sys/netinnet.h/查找socket字符串;15、进程控制1查看系统中的进程。语法:ps-aux该命令显示系统正运行的所有进程,包括后台程序。2.结束或终止进程。语法:kill-9 PIDKill 1235 中止进程号为1235的进程,进程号可以在上面的命令看到。16、文件的压缩1.压缩文件语法:compress 文件名压缩文件语法:compressdir 目录名压缩目录2.解压缩文件语法:uncompress 文件名解压缩文件语法:uncompressdir 目录名解压缩目录18、改变用户名l语法:su 用户名例如:lsu user 进入用户user 的帐号。lpasswrod:19、联机帮助l语法:man 命令l例如:lman ls在在Linux下的下的X Window系统系统l在一个终端上输入那些难记的UNIX命令实在太令人厌倦。X Window系统(或称为X)的出现解决了这个问题。lX提供了一个标准的机制,可以显示独立与设备的位图形式的图形。X也是一个窗口系统,允许应用程序在独立的窗口下组织它们的输出。l图形用户界面(GUI)并不是操作系统的一部分,它是建立在一个图形系统(对于Linux来说,就是X Window系统)之上的。Linux的图形桌面环境的图形桌面环境l对于Linux的GUI,包括两个功能强大的图形桌面环境:KDE(K Desktop Environment)和GNOME(GNU Object Model Environment)。lKDE和GNOME都提供了与Microsoft Windows和Apple Macintosh类似的桌面。l装有KDE或GNOME,用户可以直接使用Linux工作站。如果要使用命令,可以打开一个终端窗口,在shell提示符下输入命令。在在Linux下开发下开发GUI应用程序的工具应用程序的工具lGNOME带有一个名为Gtk+的工具包lKDE带有一个Qt工具包(使用C+)第三节第三节 在在Linux下的软件开发下的软件开发l在所有可能的Linux应用领域中,Linux系统最适合的还是软件开发。下面列出了各种功能部件,它们使Linux成为了一个高效的软件开发环境。lGUN的C编译器,gcc能够编译ANSI标准的C程序。lGUN的C+编译器(g+),支持ANSI标准的C+特性。lGUN的调试工具gdb,支持程序的的单步运行以查找程序故障。lGUN剖析工具(profiling)gprof,允许用户查看目前处理器正在处理哪一部分程序。lGUN make和imake工具,使用户能够管理大程序的编译和连接。lGUN Emacs编辑器,能够处理源文件,甚至可以完成编译和连接步骤,建立程序。lPerl脚本编写语言,被用来编写脚本(脚本就是由许多较小的带有UNIX命令的程序组成,以完成一个特定的任务。什么是什么是 C?lC 是一种在 UNIX 操作系统的早期就被广泛使用的通用编程语言。它最早是由贝尔实验室的 Dennis Ritchie 为了 UNIX 的辅助开发而写的,开始时 UNIX 是用汇编语言和一种叫 B 的语言编写的。从那时候起,C 就成为世界上使用最广泛计算机语言。C 能在编程领域里得到广泛支持的原能在编程领域里得到广泛支持的原因有以下一些:因有以下一些:l它是一种非常通用的语言。几乎你所能想到的任何一种计算机上都有至少一种能用的 C 编译器。并且它的语法和函数库在不同的平台上都是统一的,这个特性对开发者来说很有吸引力。l用 C 写的程序执行速度很快。lC 是所有版本的UNIX上的系统语言。注:在80年代末期美国国家标准协会(American National Standards Institute)发布了一个被称为 ANSI C 的 C 语言标准。这更加保证了将来在不同平台上的 C 的一致性。GNU C 编译器编译器 l随Linux发行的 GNU C 编译器(GCC)是一个全功能的 ANSI C 兼容编译器。如果你熟悉其他操作系统或硬件平台上的一种 C 编译器,你将能很快地掌握 GCC 使用使用 GCC gcc 命令的基本用法如下:gcc options filenames l命令行选项指定的操作将在命令行上每个给出的文件上执行。lgcc 有超过100个的编译选项可用。这些选项中的许多你可能永远都不会用到,但一些主要的选项将会频繁用到。l很多的 GCC 选项包括一个以上的字符。因此你必须为每个选项指定各自的连字符,并且就象大多数 Linux 命令一样你不能在一个单独的连字符后跟一组选项。例如,下面的两个命令是不同的:gcc-p-g test.c gcc-pg test.c l第一条命令告诉 GCC 编译 test.c 时为 prof 命令建立剖析(profile)信息并且把调试信息加入到可执行的文件里。l 第二条命令只告诉 GCC 为 gprof 命令建立剖析信息。l将一个叫 count.c 的 C 程序编译为名叫 count 的可执行文件,你将输入下面的命令:gcc-o count count.c注意:当你使用-o 选项时,-o 后面必须跟一个文件名。l有很多选项可用于告诉 GCC 在耗费更多编译时间和牺牲易调试性的基础上产生更小更快的可执行文件。最典型的是-O 和-O2 选项。-O 选项告诉 GCC 对源代码进行基本优化。这些优化在大多数情况下都会使程序执行的更快。-O2 选项告诉 GCC 产生尽可能小和尽可能快的代码。-O2 选项将使编译的速度比使用-O 时慢。但通常产生的代码执行速度会更快。用用 gdb 调试调试 GCC 程序程序 lLinux 包含了一个叫 gdb 的 GNU 调试程序。gdb 是一个用来调试 C 和 C+程序的强力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。以下是 gdb 所提供的一些功能:l它使你能监视你程序中变量的值。l它使你能设置断点以使程序在指定的代码行上停止执行。l它使你能一行行的执行你的代码。gdb 基本命令基本命令 lfile 装入想要调试的可执行文件。kill 终止正在调试的程序。list 执行一行源代码但不进入函数内部。next 执行一行源代码但不进入函数内部。step 执行一行源代码而且进入函数内部。run 执行当前被调试的程序 quit 终止 gdb watch 使你能监视一个变量的值而不管它何时被改变。break 在代码里设置断点,这将使程序执行到这里时被挂起。make 使你能不退出 gdb 就可以重新产生可执行文件。shell 使你能不离开 gdb 就执行 UNIX shell 命令。在在Linux中开发中开发C程序的基本步骤:程序的基本步骤:1.先用文本编辑器编写程序。2.在利用gcc编译及链接程序。3.执行程序。l在第2及第3步骤中,若编译时发生错误,或执行结果不符合预期,则需要回到第1步修改并调试程序,然后不断重复这3个步骤,直到程序完全无误为止。集成开发环境集成开发环境IDEl基本的集成开发环境(Integrated Development Environment,IDE)通常至少整合了文本编辑器、编译器、调试器及显示执行的结果等功能,有的还会加上资源编辑器及在线使用手册等。注:集成开发环境在编译时,还是调用gcc作为编译器,所得到的信息也是gcc输出的信息。常见的集成开发环境常见的集成开发环境l文字模式的RHIDE,操作界面很像Turbo C的集成开发环境。l一个可以同时在图形及文字模式下使用的集成开发环境Xwpe。l功能强大的KDevelop,除了可以编译C程序外,还可用来开发C+及KDE、GNOME的窗口程序。第四节第四节 Linux的的网络配置网络配置可以使用以下两种方法来配置网络:1、在图形界面下配置2、使用文本方式配置文本配置方式文本配置方式1.在终端中输入:ifconfig 查看本机的网络配置文本配置方式文本配置方式2.在终端中输入:vi /etc/hosts hosts文件是本机网络配置文件,通过它可以修改本机ip地址,本机名称,同时记录其它机器的ip和名字,供本机解析之用。例如加入 10.1.2.114 baily 文本配置方式文本配置方式3.用ping命令测试网络l ping 127.0.0.1 用来测试本机内部环路l ping localhost 以环路名测试内部环路同时 检验hosts文件是否配置正确.l ping 10.0.0.50 用来测试是否可以访问外部机器,即测试网卡地址是否正确配置好结束!