linux系统下怎么使用c语言,Linux操作系统下C语言使用.ppt

Linux操作系统下C语言使用

Linux操作系统下C语言的使用 授课教师:江兰帆 E-Mail: jiang_lanfan@126.com GCC的使用 在LINUX开发环境下,GCC(GNU C Compile)是进行C程序开发不可或缺的编译工具,它是在GNU/Linux系统下的标准C编译器。 GCC的使用 #include int main(void) { printf(“Hello World!\n”); } GCC的使用 输入命令对程序进行编译:gcc test.c GCC将创建一个名叫a.out的可执行文件,输入命令:./a.out ,程序运行。 “ ./ ”表示执行当前目录下的可执行文件或脚本程序 GCC的使用 用户还可以通过使用选项-o来改变编译后的文件名,若输入: gcc -o test test.c 此时test.c将被编译成可执行文件test,而不是a.out。 输入:./test,输出:Hello World! GCC的使用 gcc在执行编译工作的时候,总共需要4步: 1.预处理:生成.i的文件[预处理器cpp] 2.编译:将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] 3.汇编:由汇编变为目标代码(机器代码),生成.o的文件[汇编器as] 4.链接:连接目标代码,生成可执行程序[链接器ld] GCC的使用 1、使用GCC GCC是基于命令行的,使用时通常后跟一些选项和文件名。Gcc的基本用法如下:?? gcc [options] [filenames]? GCC的使用 2、GCC的常用选项 编译选项:gcc有超过100个的编译选项可用。具体的可用命令man gcc察看 。 gcc常用的编译参数: -o?选择产生的目标文件的名称,缺省的时候,gcc 编译出来的文件是a.out 编译选项 -l?选择要使用到的链接库。 Linux下的大多数库文件默认放到/usr/lib/目录下 -I 为include文件的搜索指定目录。Linux下的大多数函数都默认将头文件放到/usr/include/目录下 -c?只对文件进行预处理、编译和汇编,但不进行连接 GCC的使用 优化选项: 用GCC编译C/C++代码时,它会试着用最少的时间完成编译并且编译后的代码易于调试。易于调试意味着编译后的代码与源代码有同样的执行顺序,编译后的代码没有经过优化。 选项:-O1、-O2 、-O3 。数字越高,代表GCC的优化级别越高,程序将运行的更快。 优化??? 优化虽然能够给程序带来更好的执行性能,但在如下一些场合中应该避免优化代码: 程序开发的时候:优化等级越高,消耗在编译上的时间就越长,因此在开发的时候最好不要使用优化选项,只有到软件发行或开发结束的时候,才考虑对最终生成的代码进行优化。 优化??? 资源受限的时候:一些优化选项会增加可执行代码的体积,如果程序在运行时能够申请到的内存资源非常紧张(如一些实时嵌入式设备),那就不要对代码进行优化,因为由这带来的负面影响可能会产生非常严重的后果。 跟踪调试的时候:在对代码进行优化的时候,某些代码可能会被删除或改写,或者为了取得更佳的性能而进行重组,从而使跟踪和调试变得异常困难。 调试和剖析选项 -g 显示调试排错信息以供GDB使用 需要注意的是,使用任何一个调试选项都会使最终生成的二进制文件的大小急剧增加,同时增加程序在执行时的开销,因此调试选项通常仅在软件的开发和调试阶段使用。 C++编译器—g++ GNU C++编译器g++和C编译器的格式相同,所使用的选项和完成的工作也是一样的。 g++ [-options] [filename] 进程控制 进程的创建  fork系统调用创建新的子进程 #include<unistd.h>? pid_t???fork(); 当一个进程调用了fork以后,系统会创建一个子进程。这个子进程和父进程不同的地方只有他的进程ID和父进程ID,其他的都是一样,就象父进程克隆(clone)自己一样。 进程的创建 一个程序一调用fork函数,系统就为一个新的进程准备了三个段。首先,系统让新的进程与旧的进程使用同一个代码段,因为它们的程序还是相同的,对于数据段和堆栈段,系统则复制一份给新的进程。这样,父进程的所有数据都可以留给子进程,但是,子进程一旦开始运行,虽然它继承了父进程的一切数据,但实际上数据却已经分开,相互之间不再有影响了,也就是说,它们之间不再共享任何数据了。 进程的创建 根据fork的返回值来区分父子进程: 当fork调用失败的时候(内存不足或者是用户的最大进程数已到)fork返回-1 对于父进程fork返回子进程的ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值