预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共61页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

LINUX系统编程 LINUXLINUX系统编程系统编程 信息科学与工程学院付冲 LINUX系统编程 第二讲LinuxC程序设计基础 2.1一个最简单的C程序的编译 //example.c #include“stdio.h” intmain(intargc,char*argv[]){ printf(“Thisisasimpleexample!\n”); exit(0); } LINUX系统编程 (1)cc与gcc分别是Unix与Linux平台下的c(c++)编 译器; (2)gcc——g的含义? g——GNU; (3)Linux为保证遵循POSIX标准,即与Unix指令相 兼容,同时支持cc,其本质为:cc是gcc的符号链 接,即cc完全等同于gcc,但请注意:在Unix下只 有cc,不能使用gcc; LINUX系统编程 (4)头文件(.h)和系统库文件(.so)的位置? 头文件:/usr/include 系统库文件:/usr/lib (5)cc(gcc)在执行编译工作的时候,总共需要4步: (a)预处理,生成.i的文件; (b)将预处理后的文件转换成汇编语言,生成.s 的文件; (c)由汇编变为目标代码,生成.o的文件; (d)连接目标代码,生成可执行程序. LINUX系统编程 最简单的编译方法: 执行gccexample.c 系统将example.c编译为可执行文件a.out 在终端提示符下执行./a.out即可得到执行结果 注意两点: (a)为什么需要./呢,直接执行a.out为什么不可以呢? 注意,产生该问题主要是由于我们平时使用 Windows与Dos为主的缘故,Unix/Linux规定在搜索 一个文件时,只在环境变量PATH设定的路径中搜 LINUX系统编程 索,即如果当前路径不在PATH中,那么执行当前路 径下文件时会报错。 提示:查看一个环境变量echo$PATH; 永久增加/设定一个环境变量可操作/etc/profile文件. (b)系统将example.c直接编译为可执行文件,.i,.s,.o 中间过程文件不会出现在系统中。 若要自己为可执行文件起名呢? gcc-oexampleexample.c LINUX系统编程 即可将可执行文件命名为example,而不是系统默认制 定的a.out了。 LINUX系统编程 2.2一个由多个源程序文件组成的C程序的编译 在实际项目中,系统往往由多人共同完成,其功能 一般也由多个文件以模块化方式实现的,这时就需要用 gcc将多个独立文件分别编译,然后链接为可执行文 件。 LINUX系统编程 设一个C程序由4个源程序文件组成 //example.c #include“myprj.h” intmain(intargc,char*argv[]){ addRecord(); modifyRecord(); deleteRecord(); exit(0); } LINUX系统编程 “myprj.h”内容如下: externvoidaddRecord(); externvoidmodifyRecord(); externvoiddeleteRecord(); //addRecord.c #include<stdio.h> voidaddRecord(){ printf(“recordaddedsuccessfully!!”);} LINUX系统编程 //modifyRecord.c #include<stdio.h> voidmodifyRecord(){ printf(“recordmodifiedsuccessfully!!”);} //deleteRecord.c #include<stdio.h> voiddeleteRecord(){ printf(“recorddeletedsuccessfully!!”);} LINUX系统编程 编译方法如下: (1)生成目标文件example.o,addRecord.o, modifyRecord.o和deleteRecord.o gcc-cexample.c gcc-caddRecord.c gcc-cmodifyRecord.c gcc-cdeleteRecord.c (2)链接4个目标文件,生成可执行文件example gccexample.oaddRecord.omodifyRecord.o deleteRecord.o-oexample LINUX系统编程 2.3gcc常见参数 (1)-c 只激活预处理,编译和汇编,即只生成目标(obj) 文件 例子用法: gcc-cexample.c 将生成example.o的obj文件 LINUX系统编程 (2)-S 只激