
*第13讲 第5章开发应用程序 5.2使用编译器
*第13讲 第5章 开发应用程序 5.2使用编译器

引言 ÷什么是编译器? ÷为什么要使用编译器? ·如何使用编译器? 第13讲使用编译器第2页共27页
第13讲 使用编译器 第2页 共27页 引 言 ❖什么是编译器? ❖为什么要使用编译器? ❖如何使用编译器?

【问题的提出】 ·Geecy软件开发公司的开发人员Tom已经选定 vi作为自己的常用文本编辑器,并使用vi亲 自编写了一个简单的C语言源程序文件 “hel1o.c”保存在其个人目录下。现在,他 需要把该源程序转换成为可在Linux下运行的 程序。 第13讲使用编译器第3页共27页
第13讲 使用编译器 第3页 共27页 【问题的提出】 ❖ Geecy软件开发公司的开发人员Tom已经选定 vi作为自己的常用文本编辑器,并使用vi亲 自 编 写 了 一 个 简 单 的 C 语 言 源 程 序 文 件 “hello.c”保存在其个人目录下。现在,他 需要把该源程序转换成为可在Linux下运行的 程序

【问题分析】 ·C语言源程序需要经过编译和链接这两个过程才能 转换成二进制可执行程序。 一般在Unix系统中使用的C编译器是cc(C Compiler的缩写)。由于版权问题,在GNU/Linux 中一般不包含有该编译器。在各个Linux发行版本 中广泛使用的C编译器名为gcc(GNU cc)。 第13讲使用编译器第4页共27页
第13讲 使用编译器 第4页 共27页 【问题分析】 ❖ C语言源程序需要经过编译和链接这两个过程才能 转换成二进制可执行程序。 ❖ 一 般 在 Unix 系统中使用的 C 编译器是 cc ( C Compiler的缩写)。由于版权问题,在GNU/Linux 中一般不包含有该编译器。在各个Linux发行版本 中广泛使用的C编译器名为gcc(GNU cc)

补充内容: GCC的版本 ·在shell的提示符号下键入gcc-v,屏幕上就会显示出目前正在使用的 GCC的版本。同时这也是一个可靠的方法确定当前现在所用的是ELF或是 a.out。例如: gcc-v Reading specs from /usr/lib/gcc-lib/i386-box-linux/4.0.0/specs gcc version 4.0.0 第13讲使用编译器第5页共27页
第13讲 使用编译器 第5页 共27页 补充内容: GCC的版本 ❖ 在shell的提示符号下键入gcc -v,屏幕上就会显示出目前正在使用的 GCC的版本。同时这也是一个可靠的方法确定当前现在所用的是ELF或是 a.out。例如: $ gcc -v Reading specs from /usr/lib/gcc-lib/i386-box-linux/4.0.0/specs gcc version 4.0.0 ❖

5.2.1使用gcc 。GCc编译器的用法可以很简单,也可以很复杂。 ÷复杂的用法涉及gCc的很多功能选项,可以完 成代码优化、速度优化等工作。 第13讲使用编译器第6页共27页
第13讲 使用编译器 第6页 共27页 5.2.1 使用gcc ❖ Gcc编译器的用法可以很简单,也可以很复杂。 ❖ 复杂的用法涉及gcc的很多功能选项,可以完 成代码优化、速度优化等工作

5.2.1使用gcc ·新版本的gcc基本上同时集成了C编译器和C++编译 器,gCc根据源程序的后缀名来决定使用哪一种语 言的编译器进行编译工作。 ·后缀名为“.c”(小写)的文件被gcc认为是C语言 的源程序文件。例如: gcc hello.c 第13讲使用编译器第7页共27页
第13讲 使用编译器 第7页 共27页 5.2.1 使用gcc ❖ 新版本的gcc基本上同时集成了C编译器和C++编译 器,gcc根据源程序的后缀名来决定使用哪一种语 言的编译器进行编译工作。 ❖ 后缀名为“.c”(小写)的文件被gcc认为是C语言 的源程序文件。例如: gcc hello.c

5.2.1使用gcc(续) ÷gcc编译出来的可执行程序默认是a.out。 运行编译出来的程序:./a.out ~选项“-o”的作用是指定一个名字作为生成的 二进制可执行程序的名字。例如: gcc -o hellohello.c 第13讲使用编译器第8页共27页
第13讲 使用编译器 第8页 共27页 5.2.1 使用gcc(续) ❖ gcc编译出来的可执行程序默认是a.out。 ❖ 运行编译出来的程序: ./a.out ❖ 选项“-o”的作用是指定一个名字作为生成的 二进制可执行程序的名字。例如: gcc –o hello hello.c

5.2.1使用gcc(续) #include main() pr intf("%s\n","Hello,Torld!"): [rootelzy gee hello.c 总计112 -护一 I rootroot 1425 06-25 10:18 anaconda-ks.cfg -raxr-xr-x I root root 469911-0514:01a.out drwzr-xr-z 2 root root 409608-2817:43De1o元 root root 6111-0514:01he1o 一P度一下一一P一 root root 42147 06-25 10:15 install.log -r-r--t- root root 494906-2510:11 insta11.1og.sys1og root root 11414 07-22 21:47 scsound.log 1# o hello hello.c 总计124 I root root 1425 06-25 10:18 anaconda-ks.cfg root root 469911-0514:01a.out drx-xr-x 409608-2817:4 TRT一xr一 1”Dot root 469911-0514:04he116 -P用一1”一一一 I root root 6111-0514:01 hello.d 1 root root 42147 06-25 10:15 install.log Fx-r--P- root root 494906-2510:11 insta11.1og.sys1og poot root 11414 07-22 21:47 scsound.log ./hello Hello,Torld! 共27页
第13讲 使用编译器 第9页 共27页 5.2.1 使用gcc(续)

5.2.2使用g+ g++是一个C++版本的gcc编译器。 ·g+要求C+语言源程序文件带有后缀名 “.cc”。例如:g+hel1o.cc ÷g+编译出来的可执行程序默认也是a.out。 第13讲使用编译器第10页共27页
第13讲 使用编译器 第10页 共27页 5.2.2 使用g++ ❖ g++是一个C++版本的gcc编译器。 ❖ g++ 要 求C++ 语言 源程序 文件带 有后缀 名 “ .cc” 。例如:g++ hello.cc ❖ g++编译出来的可执行程序默认也是a.out