《linux编程环境》ppt课件

上传人:tian****1990 文档编号:74934845 上传时间:2019-01-30 格式:PPT 页数:37 大小:306.81KB
返回 下载 相关 举报
《linux编程环境》ppt课件_第1页
第1页 / 共37页
《linux编程环境》ppt课件_第2页
第2页 / 共37页
《linux编程环境》ppt课件_第3页
第3页 / 共37页
《linux编程环境》ppt课件_第4页
第4页 / 共37页
《linux编程环境》ppt课件_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《《linux编程环境》ppt课件》由会员分享,可在线阅读,更多相关《《linux编程环境》ppt课件(37页珍藏版)》请在金锄头文库上搜索。

1、第2章 Linux编程环境,在第1章中对Linux的发展历史和特点进行了简单的介绍,要在Linux环境下进行程序设计,还需要对Linux的环境有所了解。本章对Linux的编程环境进行介绍,通过本章的学习,读者将能在Linux环境下编写、编译和调试自己的程序。在Linux环境下进行开发工作,除了需要有一个可运行的Linux环境,还需要具有如下的基本知识:Linux命令行的环境和登录方式;Bash Shell的使用。,2.1 Linux环境下的编辑器,在Linux环境下有很多编译器,例如基于行的编辑器ed和ex,基于文本的编辑器vim、ecmacs等。使用文本编辑器可以帮助用户翻页、移动光标、查找

2、字符、替换字符、删除等操作。本节中对vim编辑器进行详细的介绍,并简单介绍其他的编辑器。,2.1.1 vim使用简介,vi是UNIX系统下最通用的文本编辑器,vi是visual editor的简写,发音为viai。vi不是一个所见即所得的编辑器,如果要进行复制和格式化文本需要手动输入命令进行操作。安装好Linux操作系统后,一般已经默认安装完毕了vi编辑器。为了使用方便,建议安装vi的扩展版本vim,它是比vi更强大,更加适合初学者使用。 1vim的安装 2vim编辑器的模式,2.1.2 使用vim建立文件,vim的命令行格式为“vim 文件名”,“文件名”是所要编辑的文件名。例如要编辑一个“

3、hello.c”的C文件,按照如下步骤进行操作: 1建立文件 2进入插入模式 3文本输入 4退出vim,2.1.3 使用vim编辑文本,vim的编辑命令有很多,本小节选取经常使用的几个命令进行介绍。介绍如何在vim下移动光标,进行删除字符、复制、查找、转跳等操作。 1移动光标hjkl 2删除字符x、dd、u、CTRL+R 3复制粘帖py 4查找字符串“/” 5跳到某一行g,2.1.4 vim的格式设置,vim下可以进行很多方式的格式设置,这里仅对经常使用的进行介绍,例如设置缩进,设置键对应空格的长度,设置行号等。 1设置缩进 2设置Tab键的空格数量 3设置行号,2.1.5 vim配置文件.v

4、imrc,vim启动的时候会根据/.vimrc文件配置vi的设置,可以修改文件.vimrc来定制vim。例如可以使用shiftwidth设置缩进宽度、使用tabstop设置键的宽度、使用number设置行号的等格式来定义vim的使用环境。例如按照如下的情况对.vimrc文件进行修改: set shiftwidth=2 #设置缩进为2个空格 set tabstop=2 #设置键宽度为2个空格 set number #显示行号 再次启动vim对缩进宽度,Tab键的宽度都进行了设定,并且自动显示行号。,2.1.6 使用其他编辑器,在Linux下还有一些其他的编辑器,例如Gvim等(Gvim是vim的

5、gnome版本)、codeblocks(严格来说是一个IDE开发环境)。 在Linux进行开发并不排斥使用Windows环境下的编辑器,例如写字板、UltraEdit、VC的IDE开发环境等,在保存的时候要注意保存为UNIX格式,这主要是换行符造成的。在Windows下的换行为“回车+换行”,而UNIX环境下的换行为单个的回车,在Linux下用vim查看会发现每行的末尾有一个很奇怪的“”。如果没有保存为UNIX格式,在Linux下可以用dos2UNIX转换。例如,文件hello.c使用windows编辑器,默认保存,将其转换为UNIX格式: Debian#dos2UNIX hello.c 再次

6、查看文件hello.c,“”符号已经消失了。,2.2 Linux下的GCC编译器工具集,在2.1节中,介绍了如何使用Linux环境下的编辑器编写程序,并编写了一个hello.c的程序。要使编写的程序能够运行,需要进行程序的编译。本节中将介绍Linux环境下采用的编译器GCC的选项和使用方式。,2.2.1 GCC简介,GCC是Linux下的编译工具集,是GNU Compiler Collection的缩写,包含gcc、g+等编译器。这个工具集不仅包含编译器,还包含其他工具集,例如ar、nm等。 GCC工具集不仅能编译C/C+语言,其他例如Object-C、Pascal、Fortran、Java、

7、Ada等均能进行编译。GCC在可以根据不同的硬件平台进行编译,即能进行交叉编译,在A平台上编译B平台的程序,支持常见的X86、ARM、PowerPC、mips等,及Linux、Windows等软件凭他。在本书中仅介绍对C语言进行编译,其他语言的编译请读者查阅相关资料。,2.2.2 编译程序的基本知识,GCC编译器对程序的编译如图,分为四个阶段:预处理、编译和优化、汇编、连接。,2.2.3 单个文件编译成执行文件,在Linux下使用GCC编译器编译单个文件十分简单,直接使用gcc命令后面加上要编译的C语言的源文件,GCC会自动生成文件名为a.out的可执行文件。自动编译的过程包括头文件扩展、目标

8、文件编译、以及链接默认的系统库生成可执行文件,最后生成系统默认的可执行程序a.out。 下面是一个程序的源代码,代码的作用是在控制台输出“Hello World!”字符串。 /*hello.c*/ #include int main(void) printf(“Hello World!n”); return 0; ,2.2.4 编译生成目标文件,目标文件是指经过编译器的编译生成的CPU可识别的二进制代码,因为其中的一些函数过程没有相关的指示和说明,目标文件不能执行。 在2.2.3小节中介绍了直接生成可执行文件的编译方法,在这种编译方法中,中间文件作为临时文件存在,在可执行文件生成后,会删除中间

9、文件。在很多情况下需要生成中间的目标文件,用于不同的编译目标。 GCC的-c选项用于生成目标文件,这一选项将源文件编译生成目标文件,而不是生成可执行文件。默认情况下生成的目标文件的文件名和源文件的名称一样,只是扩展名为.o。例如,下面的命令会生成一个名字为hello.o的目标文件: Debain#gcc c hello.c,2.2.5 多文件编译,GCC可以自动编译链接多个文件,不管是目标文件还是源文件,都可以使用同一个命令编译到一个可执行文件中。例如一个项目包含两个文件,文件string.c中有一个函数StrLen用于计算字符串的长度,而在main.c中调用这个函数,将计算的结果显示出来。

10、1源文件string.c 2源文件main.c 3编译运行,2.2.6 预处理,在C语言程序中,通常需要包含头文件并会定义一些宏。预处理过程将源文件中的头文件包含进源文件中,并且将文件中定义的宏进行扩展。 编译程序时选项-E告诉编译器进行预编译操作。例如如下命令将文件string.c的预处理结果显示在计算机屏幕上: Debain#gcc E string.c 如果需要指定源文件预编译后生成的中间结果文件名,需要使用选项-o。,2.2.7 编译成汇编语言,编译过程将用户可识别的语言翻译成一组处理器可识别的操作码,通常翻译成汇编语言。汇编语言通常和机器操作码之间是一种一对一的关系。 生成汇编语言的

11、GCC选项是-S,默认情况下生成的文件名和源文件一致,扩展名为.s。例如,下面的命令将C语言源文件string.c编译成汇编语言,文件名为string.s: Debain#gcc S string.c,2.2.8 生成和使用静态链接库,静态库是obj文件的一个集合,通常静态库以“.a”为后缀。静态库用程序ar生成,现在静态库已经不像之前那么普遍了,这主要是由于程序都在使用动态库。 静态库的优点是可以在不用重新编译程序库代码的情况下,进行程序的重新连接,这种方法节省编译过程的时间(在编译大型程序的时候,需要话费很长的时间)。但是由于现在系统的强大,编译的时间已经不是问题。静态库的另一个优势是开发

12、者可以提供库文件给使用的人员,不用开放源代码,这是库函数提供者经常采用的手段。当然这也是程序模块化开发的一种手段,使每个软件开发人员的精力集中在自己的部分。在理论上,静态库的执行速度比共享库和动态库要快(1-5%)。 1生成静态链接库 2使用静态链接库,2.2.9 生成动态链接库,动态链接库的名称有别名(soname)、真名(realname)和链接名(linker name)。别名由一个前缀“lib”,然后是库的名字,再加上一个后缀“.so”构成。真名是动态链接库的真实名称,一般总是在别名的基础上加上一个小版本号、发布版本等构成。除此之外,还有一个链接名,即程序连接时使用的库的名字。在动态链

13、接库安装的时候,总是复制库文件到某个目录下,然后用一个软连接生成别名,在库文件进行更新的时候,仅仅更氯砹蛹纯伞 1生成动态链接库 2动态连接库的配置 3动态链接库管理命令 4使用动态链接库,2.2.10 动态加载库,动态加载库和一般的动态链接库所不同的是,一般动态链接库在程序启动的时候就要寻找动态库,找到库函数;而动态加载库可以用程序的方法来控制什么时候加载。动态加载库主要有函数dlopen()、dlerror()、dlsym()和dlclose()来控制动态库的使用。 1打开动态库dlopen() 2获得函数指针dlsym() 3使用动态加载库的一个例子,2.2.11 GCC常用选项,除了之

14、前介绍的基本功能外GCC的选项配置是编译时很重要的选择,例如头文件路径、加载库路径、警告信息及条是等。下面对常用的选项进行介绍: 1-DMACRO选项 2GCC的常用选项及含义,2.2.12 编译环境的搭建,目前最新debian发布版本(lenny)GCC编译器的版本为gcc-4.3。在安装debian的时候,如果没有特殊指定,默认情况下GCC是不会安装的。读者可以适用which命令来查看系统中是否已经安装了GCC: Debian#which gcc 如果不存在,使用apt进行升级,获得gcc包并且安装: Debain#apt-get install gcc 如果读者对C+感兴趣可以安装g+。

15、在编译器安装完毕后,可以使用GCC进行程序的编译了。,2.3 Makefile文件简介,使用GCC的命令行进行程序编译在单个文件下是比较方便的,当工程中的文件逐渐增多,甚至变得十分庞大的时候,使用GCC命令编译就会变得渐渐变得力不从心。Linux中的make工具提供了一种管理工程的功能,可以方便的进行程序的编译,对更新的文件进行重新编译。,2.3.1 一个多文件的工程例子,工程中共有5个文件,在add目录中有add_int.c和add_float.c两个文件分别计算整形和浮点型的相加;在sub目录下有文件sub_int.c和sub_float.c,分别计算整形和浮点型的相减;顶层目录有文件ma

16、in.c负责整个程序。 工程中的代码分别存放在add/add_int.c、add/add_float.c、add/add.h、sub/sub_int.c、sub/sub_float.c、sub/sub.h和main.c中。 1文件main.c 2加操作 3减操作,2.3.1 一个多文件的工程例子,2.3.2 多文件工程的编译,将2.3.1小节中的多文件工程编译成可执行文件有两种方法,一种是命令行操作,手动输入将源文件编译为可执行文件;另一种是编写Makefile文件,通过make命令将多个文件编译为可执行文件。 1命令行编译程序 2多文件的Makefile 3多文件的编译,2.3.3 Makefile的规则,Makefile的框架是由规则构成的。make命令执行时先在Makefile文件中查找各种规则,对各种规则进行解析后,运行规则。规则的基本格式为: TARGET. : DEPENDEDS. COMMAND TARGET: DEPENDEDS:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号