Linux操作系统下C语言使用.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Linux操作系统下C语言使用

Linux操作系统下C语言的使用 授课教师:江兰帆 E-Mail: jiang_lanfan@126.com GCC的使用 在LINUX开发环境下,GCC(GNU C Compile)是进行C程序开发不可或缺的编译工具,它是在GNU/Linux系统下的标准C编译器。 GCC的使用 #includestdio.h 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 对于

文档评论(0)

bokegood + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档