LINUX环境高级编程(三)课件

上传人:我*** 文档编号:144929983 上传时间:2020-09-14 格式:PPT 页数:54 大小:422KB
返回 下载 相关 举报
LINUX环境高级编程(三)课件_第1页
第1页 / 共54页
LINUX环境高级编程(三)课件_第2页
第2页 / 共54页
LINUX环境高级编程(三)课件_第3页
第3页 / 共54页
LINUX环境高级编程(三)课件_第4页
第4页 / 共54页
LINUX环境高级编程(三)课件_第5页
第5页 / 共54页
点击查看更多>>
资源描述

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

1、LINUX环境高级编程,中国地质大学(武汉)计算机学院 朱静,中国地质大学(武汉)计算机学院,第三讲 LINUX C编程环境,调试工具,工程管理器Makefile,开发工具,LINUX下C编程概述,中国地质大学(武汉)计算机学院,LINUX下C编程概述,程序安装目录 /usr/local /usr/bin /usr/local/bin 编程语言 C C+ Java JavaScript Perl Python PHP . (LP P4 表1-1),中国地质大学(武汉)计算机学院,LINUX下C编程概述,头文件目录 /usr/include /usr/include/sys(linux) 库文件

2、目录 /lib /usr/lib *.a *.so,GCC是GNU项目的编译组件之一 GCC编译器能将C,C+源程序,汇编程序和目标程序编译链接成为可执行文件。 四个编译步骤 预处理(也叫预编译,preprocessing) 编译(compliling) 汇编(assembling) 链接(linking),中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,LINUX C编程概述-GCC编译器,GCC的基本用法和选项 一般格式:gcc options filenames 例:gcc o hello hello.c Options选项: -c -o -O -On -g,-gg

3、db -shared -static -thread,中国地质大学(武汉)计算机学院,GCC编译过程中的文件类型 *.c C语言源代码文件 *.a 由目标文件构成的档案库文件 *.C,*.cc,*.cxx C+源代码文件 *.h 程序所包含的头文件 *.i 已经预处理过的C源代码文件 *.ii 已经预处理过的C+源代码文件 *.m Objective-C源代码文件 *.o 编译后的目标文件 *.s 汇编语言源代码文件 *.S 经过预编译的汇编语言源代码文件,中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,GCC 警告提示功能 gcc pedantic hello.c o

4、hello 发现一些不符合ANSI/ISO C标准的代码 gcc Wall hello.c o hello 产生尽可能多的警告 库依赖 gcc hell.c I/home/include o hello gcc -o fred fred.c -lm gcc -o fred fred.c /usr/lib/libm.a 代码优化,gcc On hello.c o hello,中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,GCC的版本 $gcc v 或 $gcc -version 查看gcc的版本,内核不同,可能gcc的版本不同 GCC是一组编译工具的总称 C编译器 cc,

5、 ccl, ccplus, gcc C+编译器 c+, ccplus, g+ 源码预处理器 cpp, cpp0 库文件 libgcc.a, libgcc_eh.a, libgcc_s.so 帮助 man gcc,中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,例:hello.c #include int main(int argc,char *argv) Printf(“Hello,linux!n”); 编译:gcc o hello hello.c 运行:./hello,中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,例:创建一个小型静态函数库,其中

6、包含两个函数,并在一个例程中调用函数。 (LP P9 静态库),中国地质大学(武汉)计算机学院,LINUX C编程概述-GCC编译器,IDE开发环境 IDE是一个图形化集成开发环境,将创建、调试、运行应用程序的部分或所有工具集成到一起。一般会包含一个编辑器,一个文件浏览器和一种运行应用程序并捕获其输出的方法。 Kdevelop Eclipse Anjuta Netbeans Qt SlickEdit Code:Blocks,中国地质大学(武汉)计算机学院,开发工具,命令行工具 源代码控制 中大型团队项目开发中,通过源代码控制,避免项目组多个开发人员文件修改的冲突,跟踪管理对源文件进行的修改。

7、SCCS:已基本被RCS取代。 RCS: 源代码版本管理工具, 通过RCS文件进行源文件管理。 跟踪并记录源文件的每一次改动。通过这个记录文件,可以重建出任何一个以前的版本。 RCS只保存文件版本间的不同之处,节省存储空间。 RCS通常以.v为后缀。不支持并发访问(互斥访问)。( lock-modify-unlock ),中国地质大学(武汉)计算机学院,开发工具,命令行工具 源代码控制 CVS:(Current Version Control)并发版本控制系统; CVS在进行源代码管理时的特点: 源代码空间与用户空间分离 并发访问(Copy-Modify-Merge) 源文件共享 独立的工作环

8、境 CVS使用手册: Subversion CVS 替代版;,中国地质大学(武汉)计算机学院,开发工具,命令行工具 发行软件 patch tar 软件包管理工具 rpm dpkg Alien-rpm和dpkg之间的格式转换工具 编写手册页 手册页格式 手册页生成groff 手册页安装,中国地质大学(武汉)计算机学院,开发工具,工程管理器Makefile,工程管理器Makefile 规定整个工程(project)的编译规则。 一个工程中的源文件不计其数,按类型,功能,模块分别放在不同的目录中,Makefile通过定义一系列的规则来实现“自动化编译”。一旦写好Makefile,只需要一个make命

9、令,就能完成整个工程的编译。,中国地质大学(武汉)计算机学院,工程管理器Makefile,make命令 功能: 查找当前目录下的makefile文件; 初始化文件中的变量; 分析makefile中的所有规则; 为所有的目标文件创建依赖关系; 根据依赖关系,决定哪些目标文件要重新生成; 执行生成命令; 特点:提高工作效率,便于大型项目的开发。,中国地质大学(武汉)计算机学院,工程管理器Makefile,make命令的语法 make 参数 宏定义 目标文件 参数: -kmake过程中发现错误时执行仍然继续 -n只输出要执行的操作步骤而不真正执行这些步骤 -f 或-file 指定make要执行的ma

10、kefile文件名 -w make时修改了目录则打印信息 -d 打印调试信息 -I 指定makefile文件的目录 -h help,中国地质大学(武汉)计算机学院,一个实例: /*main.c*/ #include mytool1.h #include mytool2.h int main(int argc,char *argv) mytool1_print(hello); mytool2_print(hello); ,工程管理器Makefile,中国地质大学(武汉)计算机学院,一个实例: /*mytool1.c*/ #include mytool1.h void mytool1_print(

11、char *print_str) printf(This is mytool1 print %sn,print_str); /*mytool2.c*/ #include mytool2.h void mytool2_print(char *print_str) printf(This is mytool2 print %sn,print_str); ,工程管理器Makefile,中国地质大学(武汉)计算机学院,/*mytool1.h*/ #ifndef _MYTOOL_1_H #define _MYTOOL_1_H void mytool1_print(char *print_str); #e

12、ndif /*mytool2.h*/ #ifndef _MYTOOL_2_H #define _MYTOOL_2_H void mytool2_print(char *print_str); #endif,工程管理器Makefile,中国地质大学(武汉)计算机学院,#makefile文件 main:main.o mytool1.o mytool2.o gcc -o main main.o mytool1.o mytool2.o main.o:main.c mytool1.h mytool2.h gcc -c main.c mytool1.o:mytool1.c mytool1.h gcc -c

13、 mytool1.c mytool2.o:mytool2.c mytool2.h gcc -c mytool2.c,工程管理器Makefile,将前述所有文件放到同一个文件夹中,执行make命令,则生成可执行文件main。 $make 执行makefile文件 $./main 运行main程序,中国地质大学(武汉)计算机学院,make的工作过程 main.c mytool1.h mytool2.h mytool1.c mytool1.h mytool2.c mytool2.h,main.o,mytool1.o,mytool2.o,main,工程管理器Makefile,中国地质大学(武汉)计算机

14、学院,make的工作过程 1. make会在当前目录下找名字为“makefile”的文件 2.如果找到,它会找文件中的第一个目标文件(如main),并把这个文件做为最终的目标文件。 3. 如果目标文件不存在,或者目标所依赖的文件的修改时间比目标文件新,make就会执行后面所定义的规则来生成目标文件。 4. 如果目标和目标依赖的文件都存在,且修改时间最新,则根据依赖文件的依赖关系和文件修改时间决定是否按规则生成依赖文件,以此类推。 5. 如果所有文件都找到,make先生成中间依赖文件(例如.o文件),再用依赖文件生成最终的目标文件。,中国地质大学(武汉)计算机学院,工程管理器Makefile,M

15、akefile的文件名 make默认会在当前目录下按顺序寻找文件名为:GNUmakefile,makefile,Makefile的文件,找到后解释执行。 最好使用Makefile这个文件名,大多数make都支持makefile和Makefile这两个文件名。 最好不用GNUmakefile。 可以用其它的文件名来充当makefile文件,用make命令的-f或-file参数指定文件。 例: $make -f make.linux $make -file Make.AIX,中国地质大学(武汉)计算机学院,工程管理器Makefile,Makefile的内容 显式规则。说明了如何生成一个或多个目标文

16、件。明确指出的要生成的文件,文件的依赖文件,生成的命令等。 隐含规则。make命令的自动推导,可以比较简略地书写makefile。 宏的定义。当makefile被执行时,定义的宏会被扩展到相应的引用位置上去。,中国地质大学(武汉)计算机学院,工程管理器Makefile,Makefile的内容 4 文件指示。包含了三个部分。一个是在一个Makefile中引用另一个Makefile;另一个是指根据某些条件指定Makefile中的有效部分,与C语言中的预编译#if类似;第三包含一个多行的命令。 5 注释。Makefile中只有行注释“#”,如果要使用“#”字符,需要用转义字符进行转义:“#” 6 特殊字符 -:make时忽略所有错误; :执行某些命令时不显示该命令。例如echo说明信息。,中国地质大学(武汉)计

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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