原创 GCC 程序编译的举例使用(常用指令)

2011-10-8 20:14 2758 11 11 分类: MCU/ 嵌入式

Linux 系统下 gcc 的使用说明

   Linux 系统下的gcc (GNU C Compiler)是GNU 推出的功能强大、性能优越的多平台编辑器,是GNU的代表作之一。 gcc 可以在多种硬件平台上编译出可执行程序,其执行效率与一般的编译器相比平均效率要高20%~30%。

    GCC编译器能将C、C++语言源程序、 汇编程序编译、链接成可执行文件。 在Linux系统中,可执行文件没有统一的后缀,系统从文件的属性来区分可执行文件和不可执行文件。

   Gcc通过后缀来区别输入文件的类别: 
1  .c为后缀的文件:  C语言源代码文件 
2  .a为后缀的文件: 是由目标文件构成的库文件 
3  .C,.cc或.cxx为后缀的文件:  是C++源代码文件 
4  .h为后缀的文件: 头文件 
5  .i 为后缀的文件:是已经预处理过的C源代码文件 
6  .ii为后缀的文件:是已经预处理过的C++源代码文件 
7  .o为后缀的文件: 是编译后的目标文件 
8  .s为后缀的文件: 是汇编语言源代码文件 
9  .S为后缀的文件: 是经过预编译的汇编语言源代码文件。

使用GCC编译程序时,编译过程可以被细分为四个阶段:
1、预处理(Pre-Processing)
2、编译(Compiling)
3、汇编(Assembling)
4、链接(Linking)

以上为介绍GCC的一些基础概念,下来我们拿一事例进行详细的说明:

我们还是从经典的代码 hello.c 开始

原程序为:

#include <stdio.h>

int main(void)
{
   printf (Hello world!\n);
   return 0;
}

1.编译和运行这段程序:

# gcc hello.c

# ./a.out
输出:Hello world!

由此可知 gcc 的基本用法为:
gcc [options] [filenames]
options:编译器所需要的编译选项
filenames: 要编译的文件名。

上例中省去了options 项,经过编译输出 a.out 文件,说明 gcc 在编译一个代码时默认输出为:a.out 文件,但是当编译的代码比较多的时候,这种方法不容易区别。

2. -o output_filename:确定可执行文件的名称为output_filename。如果不给出这个选项, gcc就给出预设的可执行文件a.out。

# gcc hello.c -o hello

# ./hello

输出为:hello world!

由此可知输出的文件名字为:hello ,同时可以明白 “-o”指令是让

系统输出一个指定名称的可执行文件。

3. -c:只编译,不连接成为可执行文件,编译器只是由输入的.c等

代码文件生成.o为后缀的目标文件。

# gcc -c hello.c

# 运行后生成 hello.o 目标文件

4. -g:产生调试工具(GNU的gdb)所必要的调试信息,要想对编译出

程序进行调试,就必须加入这个选项。

# gcc -g hello.c -o hello

# gdb hello

此时生成的 hello 文件即包含调试所需的信息,通过 gdb 可以进行

像单片机中 KEIL 软件一样的调试代码,验证代码。

5. -O:(注意这里是零)对程序进行优化编译、链接,采用这个选

项,整个源代码会在编译、连接过程中进行优化处理,这样产生的可

执行文件的执行效率可 以提高,但是,编译、连接的速度就相应地要

慢一些。

# gcc hello.c -o hello

# time ./hello

20111008200343001.gif

# gcc -0 hello.c -hello

# time ./hello

20111008200455001.gif

#gcc -02 hello.c -o hello

# time ./hello

20111008200627001.gif

由此可知,指令“-0”和“-02”为代码优化指令,可以减少编译的时间。

6. -Wall:生成所有警告信息

# gcc -Wall hello.c -o hello

运行后会把所有的警告信息列出。

7. -w:不生成任何警告信息

# gcc -w hello.c -o hello

运行后不显示任何的警告信息

8.  -DMACRO: 定义 MACRO 宏,等效于在程序中用               #define MACRO

 


 

 


 

 

文章评论0条评论)

登录后参与讨论
我要评论
0
11
关闭 站长推荐上一条 /2 下一条