linux_C语言编程.ppt_第1页
linux_C语言编程.ppt_第2页
linux_C语言编程.ppt_第3页
linux_C语言编程.ppt_第4页
linux_C语言编程.ppt_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Linux下C编程,C语言,C语言有两种形式:K main() char str100; reverse(cat,str); printf(reverse(cat)=%sn,str); reverse(noon,str); printf(reverse(noon)=%sn,str); ,int reverse(before,after) char *before; char *after; int i,j,len; len=strlen(before); for(j=len-1;i=0;j=0;j-;i+) afteri=beforej; afterlen=0; ,编译原代码: gcc rev

2、erse.c -o reverse 执行程序: ./reverse,多模块程序,优点: 1、代码重用; 2、便于维护; 策略: 从程序中移出待共享的函数,单独编译它,然后把生成的目标模块连接到希望使用它的程序中。,对reverse.c程序进行处理,将reverse()函数从原文件中移除,创建可重用函数。 步骤: 1、创建一个原代码模块,其中包含函数的原代码和包含函数原型的头文件; 2、用gcc的-c选项把模块编译为目标模块。 3、连接编译住程序和目标模块生成可执行文件。,头文件:reverse.h int reverse(); 新函数模块程序reverse-m.c清单: #include #i

3、nclude “reverse.h” reverse(before,after) char *before,*after; . ,reverse的主程序代码: #include #include “reverse.h” main() . ,分别编译和连接模块: 编译模块: gcc -c reverse-m.c gcc -c reverse.c 或 gcc -c reverse-m.c reverse.c 连接生成可执行文件: gcc reverse-m.o reverse.o -o reverse,重用reverse函数,使用reverse函数构建回文程序palind。包括:palind头文件

4、、palind函数文件代码、palind主文件。 palind头文件: int palind();,Palind-m.c模块文件: #include “palind.h” #include “reverse.h” #include Int palind(str) char *str; char reversedStr100; reverse(str,reversedStr); return(strcmp(str,reversedStr)=0); ,palind.c主程序代码: #include #include “palind.h” main() printf(“palind(cat)=%dn

5、”,palind(“cat”); printf(“palind(noon)=%dn”,palind(“noon”); ,编译模块、连接生成可执行文件 编译模块 gcc -c palind-m.c palind.c 连接生成可执行文件 gcc reverse-m.o palind-m.o palind.o -o palind,归档模块ar,为了便于管理目标模块,GNU使用实用程序ar来组织和分组目标模块。其主要功能: 创建以扩展名为“.a”的归档格式文件 在归档中添加、删除、替换和追加文件 获得归档内容表,ar 格式: ar option 归档文件名 目标模块文件列表 option可以取以下值:

6、 d从归档中删除文件 q在归档末尾追加文件 r替换归档中的文件 t显示归档文件明列表 x从归档中抽取指定文件,维护和使用归档,步骤: 创建归档文件 修改维护归档 使用归档进行编译,以回文程序(palind)为例: 创建归档文件palind.a,包括所有与回文有关的目标模块 1、编译所有模块: gcc -c palind-m.c reverse-m.c palind.c 2、建立归档palind.a ar r palind.a palind-m.o reverse-m.o 3、使用归档进行编译 gcc palind.o palind.a o palind,管理模块依赖性make,在多模块程序中,

7、一个模块的编译要依赖于别的模块,在大型的程序中这就增添了程序的维护难度。便于管理各模块之间的依赖性,一个方法就是使用GNU的make程序,它能创建一个Makefile文件,列出每个可执行文件的所有文件依赖。一旦创建了Makefile,重建可执行文件就很容易。只要执行: make,make 格式: make -f makefile -f 允许指定用户自己的make文件,否则make将依次查找“GNUmakefile”、“makefile”和“Makefile”,Makefile文件,要用make维护一个可执行文件,必须创建一个make文件。这个文件列出在创建可执行文件时使用的所有文件之间的彼此依

8、赖性。 最简单的Make文件包含形如以下的规则: targetList: dependencyList commandList,其中: targetList为目标文件; dependencyList是目标文件所依赖文件列表; commandList:重构目标文件所需的命令; commandList每行必须空出一个制表位。规则必须至少一个空白行开始。,例:要创建逆序程序reverse,则要依赖于reserve.o、和reverse-m.o,则reverse的make文件(reverse.make)的一个规则就是: reverse: reverse.o reverse-m.o gcc revers

9、e.o reverse-m.o o reverse 而reverse.o创建于reverse.c和reverse-o.h、reverse-m.o创建于reverse-m.c和reverse-o.h ,因此还有如下规则:,reverse.o: reverse.c reverse.h gcc -c reverse.c reverse-m.o: r reverse-m.c reverse.h gcc -c reverse-m.c 通过make编译reverse: make f reverse.make,简化make文件规则,实用程序make有一些预定义规则来告诉make如何从C源代码创建目标模块,因

10、此在make文件中可以省去模块编译规则的命令列表(commandList)。另外make还有一些推断规则,使make实用程序可以知道目标文件名与源文件名是相关的。因此,在依赖列表中,源文件的文件名可以省略。,简化后的reverse.make内容: Reverse.make2 reverse: reverse.o reverse-m.o gcc reverse.o reverse-m.o o reverse reverse.o: reverse.h reverse-m.o: reverse.h,使用make维护归档,要引用归档中的目标文件,把模块文件的名字放在圆括号中,放在归档文件名之后。当第一次运行make程序时,make将使用内建规则自动完成归档操作。,修改后的reverse程序的make文件,reverse.make3: reverse: reverse.o reverse.a(reverse-m).o gcc rever

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论