GCC起步
在学习使用GCC之前,下面的这个例子能够帮助用户迅速理解GCC的工作原理,并将其立即运用到实际的项目开发中去。首先用熟悉的编辑器输入清单1所示的代码:
清单1:hello.c
#include
int main(void)
{
printf ("Hello world, Linux programming!\\n");
return 0;
}
然后执行下面的命令编译和运行这段程序:
# gcc hello.c -o hello
# ./hello
Hello world, Linux programming!
从程序员的角度看,只需简单地执行一条GCC命令就可以了,但从编译器的角度来看,却需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序 cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用ccl和as将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。
为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:
# gcc -E hello.c -o hello.i
此时若查看hello.i文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:
# gcc -c hello.i -o hello.o
GCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件:
# gcc hello.o -o hello
在采用模块化的设计思想进行软件开发时,通常整个程序是由多个源文件组成的,相应地也就形成了多个编译单元,使用GCC能够很好地管理这些编译单元。假设有一个由foo1.c和foo2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序foo,可以使用下面这条命令:
# gcc foo1.c foo2.c -o foo
如果同时处理的文件不止一个,GCC仍然会按照预处理、编译和链接的过程依次进行。如果深究起来,上面这条命令大致相当于依次执行如下三条命令:
# gcc -c foo1.c -o foo1.o
# gcc -c foo2.c -o foo2.o
# gcc foo1.o foo2.o -o foo
在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。假设项目中有100个源文件需要编译,并且每个源文件中都包含 10000行代码,如果像上面那样仅用一条GCC命令来完成编译工作,那么GCC需要将每个源文件都重新编译一遍,然后再全部连接起来。很显然,这样浪费的时间相当多,尤其是当用户只是修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍,因为很多已经生成的目标文件是不会改变的。要解决这个问题,关键是要灵活运用GCC,同时还要借助像Make这样的工具。
分享到:
相关推荐
2. **编译(Compiling)**:接着,GCC使用ccl将预处理后的.i文件转换为汇编代码(.s文件)。编译阶段主要关注语法分析、语义分析以及生成中间代码。 3. **汇编(Assembling)**:GCC的as工具将编译阶段产生的汇编代码转化...
c开发工具gcc 使用实例 配合linux系统下c语言开发详解pdf电子书一起使用
"GCC 使用详解" GCC 使用详解是 Linux 程序员的必备技能之一,GCC 是 GNU 项目中符合 ANSI C 标准的编译系统,能够编译用 C、C++和 Object C 等语言编写的程序。GCC 不仅功能非常强大,结构也异常灵活。 GCC 的...
GCC使用手册是学习和精通GCC的重要资源,其中包含了详细的使用指南、参数解释以及错误处理等内容。这份资料大全中的"GCC中英文手册"涵盖了GCC的所有主要功能和选项,对于初学者和高级开发者都是极其宝贵的参考资料。...
GCC使用手册是GCC用户和开发者的重要参考资料,它详尽地解释了如何使用GCC进行编译、链接以及优化代码。手册通常会包含以下几个主要部分: 1. **基本使用**:介绍如何通过命令行调用GCC,包括基本语法、选项以及...
### GCC使用手册知识点详解 #### 一、GCC简介与特性 **GCC**(GNU Compiler Collection)是一种高度集成的编译工具集,它不仅包含了编译器,还包括一系列与编译相关的工具,使其能够将人类可读的高级语言源代码转换...
【GCC使用手册】是针对Linux环境下GCC编译器的一份详细指南,旨在为开发者提供中文版的参考材料。GCC(GNU Compiler Collection)是一款强大的多语言编译器,支持包括C、C++、Objective-C等多种编程语言。它能够将源...
**Unix GCC使用手册中文版** GCC(GNU Compiler Collection)是GNU项目的核心组件,是一个开源的、跨平台的编译器套件,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada和Go等。在Unix系统中,GCC广泛...
2. gcc_egcs 使用 3. gdb 使用 4. gcc 常用选项对代码的影响 1. 一般情况 2. -O 编译选项 3. -O2 编译选项 4. -fomit-frame-pointer 编译选项 5. -fomit-frame-pointer && -O2 6. -fPIC 编译选项 7. -static 编译...
默认情况下,GCC使用最新的标准,但你可以根据需要指定。 **12. 创建动态库** 要创建动态库,使用`-shared`选项: ``` gcc -shared -o libmylib.so mylib.c ``` **13. 静态链接** 如果你想创建一个不依赖动态库的...
### 简单GCC使用教程B:深入理解第三方库的应用 #### 一、引言 在进行Linux下的软件开发过程中,很少会有项目是完全独立于任何第三方库的。大多数情况下,开发者都会依赖一个或多个外部函数库来实现特定的功能。...
### GCC使用手册知识点详解 #### 一、GCC简介与安装准备 **1.1 获取源代码** GCC(GNU Compiler Collection)是一套由GNU项目开发的开源编译器工具集,适用于多种编程语言如C、C++、Objective-C、Fortran等。对于...
**GCC——全球最广泛使用的开源编译器** GCC(GNU Compiler Collection),是GNU项目的核心组件,由GNU组织开发并维护,支持多种编程语言,包括C、C++、Fortran、Ada、Objective-C等。这个“GCC.rar_gcc 中文手册_...
### GCC 使用笔记详解 #### 一、GCC简介与历史 GCC(GNU Compiler Collection)是由Richard Stallman于1984年发起的GNU项目的一部分,旨在为开发者提供一套免费且功能强大的编译工具集。最初,GCC是作为GNU项目中...
这个名为“GCC.rar_gcc 使用_unix g”的压缩包包含了关于如何在Unix环境下使用GCC的详细资料,特别适合初学者和开发者参考。 **GCC的基本用法** 1. **安装GCC**: 在大多数Unix/Linux系统中,可以通过包管理器(如`...
**GCC使用教程** GCC,全称GNU Compiler Collection(GNU编译器集合),是GNU项目的一部分,它提供了一整套用于编程的编译器,包括C、C++、Objective-C、Fortran、Ada以及Go等语言的编译工具。GCC不仅在Linux系统中...
Linux GCC使用大全涵盖了GCC编译器的全面使用和优化技巧,是开发人员在Linux环境下进行C/C++编程的重要工具。GCC(GNU Compiler Collection)是由GNU项目开发的一套开源编译器,支持多种编程语言,包括C、C++、...
这个压缩包“gcc.rar_gcc makefile_gcc 使用_makefile_makefile gcc_makefile in en”包含了关于GCC的详细资料和makefile的使用指南。`gcc资料大全.chm`可能是一个包含GCC的介绍、使用教程、配置方法、错误处理等...
**GCC与Ubuntu:GCC使用指南** GCC(GNU Compiler Collection)是GNU项目的一部分,是一个开源的、跨平台的编译器套件,支持多种编程语言,包括C、C++、Fortran、Objective-C等。在Ubuntu操作系统中,GCC是开发者...
linux gcc使用详解,解释的很详细,带示例.