《Linux课件》第七讲 linux下C语言编程——基础知识

第七讲inux下C语言编程-基础知识
第七讲 linux下C语言编程--基础知识

源程序的编译 在 Linux下面,如果要编译一个c语言源 程序我们要使用GNU的gcc编译器.下面 我们以一个实例来说明如何使用gcc编译 器
• 源程序的编译 • 在Linux下面,如果要编译一个C语言源 程序,我们要使用GNU的gcc编译器. 下面 我们以一个实例来说明如何使用gcc编译 器

开放、自由和灵活是 Linux的魅力所在,而 这一点在GCC上的体现就是程序员通过它 能够更好地控制整个编译过程。在使用 GCC编译程序时,编译过程可以被细分为 四个阶段: ◆预处理(Pre- Processing ◆编译( Compiling) 汇编( Assembling) ·◆链接 ( Linking
• 开放、自由和灵活是Linux的魅力所在,而 这一点在GCC上的体现就是程序员通过它 能够更好地控制整个编译过程。在使用 GCC编译程序时,编译过程可以被细分为 四个阶段: • ◆ 预处理(Pre-Processing) • ◆ 编译(Compiling) • ◆ 汇编(Assembling) • ◆ 链接(Linking)

GCc起步 ·在学习使用GCC之前,下面的这个例子能够帮助 用户迅速理解GCC的工作原理,并将其立即运用 到实际的项目开发中去。首先用熟悉的编辑器输 入清单1所示的代码: 清单1: hello. c ·# include“ stdio.h int main(void) printf Hello world, Linux programming !n); return o
GCC起步 • 在学习使用GCC之前,下面的这个例子能够帮助 用户迅速理解GCC的工作原理,并将其立即运用 到实际的项目开发中去。首先用熟悉的编辑器输 入清单1所示的代码: • 清单1:hello.c • #include “stdio.h” • int main(void) • { • printf ("Hello world, Linux programming!\\n"); • return 0; • }

然后执行下面的命令编译和运行这段程序 t gcc hello. c-o hello it /hello Hello world, Linux programming!
• 然后执行下面的命令编译和运行这段程序: • # gcc hello.c -o hello • # ./hello • Hello world, Linux programming!

·从程序员的角度看,只需简单地执行一条 GCC命令就可以了,但从编译器的角度来 看,却需要完成一系列非常繁杂的工作。 首先,GCC需要调用预处理程序cpp,由 它负责展开在源文件中定义的宏,并向其 中插入“# include”语句所包含的内容;接 着,GCC会调用cc和as将处理后的源代码 编译成目标代码;最后,GCC会调用链接 程序ld,把生成的目标代码链接成一个可执 行程序
• 从程序员的角度看,只需简单地执行一条 GCC命令就可以了,但从编译器的角度来 看,却需要完成一系列非常繁杂的工作。 首先,GCC需要调用预处理程序 cpp,由 它负责展开在源文件中定义的宏,并向其 中插入“#include”语句所包含的内容;接 着,GCC会调用ccl和as将处理后的源代码 编译成目标代码;最后,GCC会调用链接 程序ld,把生成的目标代码链接成一个可执 行程序

·为了更好地理解GCC的工作过程,可以把上述编 译过程分成几个步骤单独进行,并观察每步的运 行结果。第一步是进行预编译,使用-E参数可以 让GCC在预处理结束后停止编译过程: #f gcc-E hello c-o hello. i 此时若查看 hello. cpp文件中的内容,会发现 stdio h的内容确实都插到文件里去了,而其它应 当被预处理的宏定义也都做了相应的处理
• 为了更好地理解GCC的工作过程,可以把上述编 译过程分成几个步骤单独进行,并观察每步的运 行结果。第一步是进行预编译,使用-E参数可以 让GCC在预处理结束后停止编译过程: • # gcc -E hello.c -o hello.i • 此时若查看hello.cpp文件中的内容,会发现 stdio.h的内容确实都插到文件里去了,而其它应 当被预处理的宏定义也都做了相应的处理

下一步是将helo编译为目标代码,这可以 通过使用-c参数来完成: i gcc-c hello i-o hello. o GCC默认将文件看成是预处理后的C语言 源代码,因此上述命令将自动眺过预处理 步骤而开始执行编译过程,也可以使用×参 数让GCC从指定的步骤开始编译
• 下一步是将hello.i编译为目标代码,这可以 通过使用-c参数来完成: • # gcc -c hello.i -o hello.o • GCC默认将.i文件看成是预处理后的C语言 源代码,因此上述命令将自动跳过预处理 步骤而开始执行编译过程,也可以使用-x参 数让GCC从指定的步骤开始编译

最后一步是将生成的目标文件链接成可执 行文件: t gcc hello.o-o hello
• 最后一步是将生成的目标文件链接成可执 行文件: • # gcc hello.o -o hello

gcc编译器就会为我们生成一个helo的可 执行文件执行heo就可以看到程序的输 出结果了命令行中gcc表示我们是用gcc 来编译我们的源程序,0选项表示我们要求 编译器给我们输出的可执行文件名为 hello而 hello.c是我们的源程序文件
• gcc 编译器就会为我们生成一个hello的可 执行文件.执行./hello就可以看到程序的输 出结果了.命令行中 gcc表示我们是用gcc 来编译我们的源程序,-o 选项表示我们要求 编译器给我们输出的可执行文件名为 hello 而hello.c是我们的源程序文件
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《Linux课件》第六章 Internet应用服务器的配置.ppt
- 《Linux课件》第五章 Linux网络基础.ppt
- 《Linux课件》第二章 Linux的常用命令.ppt
- 《Linux课件》第六章 Linux网络应用.ppt
- 《Linux课件》第五章 Linux系统管理.ppt
- 《Linux课件》第四章 Linux使用基础.ppt
- 《Linux课件》第三章 Linux的安装与配置.ppt
- 《Linux课件》SHELL编程.ppt
- 《Linux课件》第三章 Linux中的进程管理.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)线性表操作综合运行例子.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第8章 图.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第7章 树.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第6章 数组与广义表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第5章 串.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第4章 栈和队列.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第3章 线性表.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第2章 算法分析.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第1章 绪论(闫会峰).ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 重庆移通学院:《数据结构》课程教学资源(PPT课件讲稿)渡河问题.ppt
- 《Linux课件》第三讲 linux系统中资源的访问与操作.ppt
- 《Linux课件》第四讲 shell程序设计与用户管理.ppt
- 《Linux课件》第四章 用户和组管理.ppt
- 《Linux课件》第四章 用户和组管理.ppt
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-1)Linux简介.doc
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-2)实例—硬盘安装RedHat Enterprise Linux 5.2.doc
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-3)Linux的引导过程.doc
- 《Linux操作系统》课程教学资源(讲义)第一章 Linux简介与安装(1-4)引导工具GRUB的设置与应用.doc
- 《Linux操作系统》课程教学资源(讲义)第一章习题.doc
- 《Linux操作系统》课程教学资源(讲义)第二章 Linux的用户接口与文本编辑器(2-1)Shell.doc
- 《Linux操作系统》课程教学资源(讲义)第二章 Linux的用户接口与文本编辑器(2-2)KDE与GNOME.doc
- 《Linux操作系统》课程教学资源(讲义)第二章 Linux的用户接口与文本编辑器(2-3)Linux中的文本编辑器简介.doc
- 《Linux操作系统》课程教学资源(讲义)第二章 Linux的用户接口与文本编辑器(2-4)实例—使用vim编辑文件.doc
- 《Linux操作系统》课程教学资源(讲义)第二章习题.doc
- 《Linux操作系统》课程教学资源(讲义)第三章 系统管理(3-1)用户管理.doc
- 《Linux操作系统》课程教学资源(讲义)第三章 系统管理(3-2)进程管理.doc
- 《Linux操作系统》课程教学资源(讲义)第三章 系统管理(3-3)其他系统管理.doc
- 《Linux操作系统》课程教学资源(讲义)第三章习题.doc
- 《Linux操作系统》课程教学资源(讲义)第四章 磁盘与文件管理(4-1)磁盘管理.doc
- 《Linux操作系统》课程教学资源(讲义)第四章 磁盘与文件管理(4-2)文件与目录管理.doc