GCC的使用及常用选项介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_877667836/article/details/82779741

【重点】

  • 掌握C语言如何变成机器指令的过程
  • gcc工具的几个常用选项的意义

【难点】

  • c编译过程在gcc工具上的体现

GCC概述

GCC(GNU Compiler Collection,GNU编译器套件),是由 GNU 开发的编程语言编译器。GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理 C语言。GCC 很快地扩展,变得可处理 更多编程语言。

C语言的编译过程

  1. 预处理
    预编译是将c源码中的宏进行替换
    命令 [gcc -E]

    [+]gcc -E -o source.i source.c
    [-]source.i 
    
  2. 编译
    编译是将预处理过的文件翻译成汇编语言
    命令[gcc -S]

    [+]gcc -S -o source.s source.c
    [-]source.s
    
  3. 汇编
    对汇编文件再编译生成目标文件
    命令[gcc -c]

    [+]gcc -c -o source.o source.s
    [-]source.o
    
  4. 链接
    链接是将目标文件与其他目标文件链接生成可执行文件build
    命令[gcc -o filename]

    [+]gcc -o build source.o
    [-]build
    

我们生成可执行文件会经历上述过程,但我们没有必要一步步那样做,使用下列命令可以直接使c源文件编译链接成可执行文件。

[+]gcc -o build source.c
[-]build

GCC的其他应用

1.编译时加入宏
在开发过程中,我们常常有需要维护多个版本,比如说有debug版和release版,debug版会输出一些调试信息,release版不希望看到这信息。这是可以使用宏作为开关,在编译时加入宏,实现同一个代码不同的编译结果。
命令[gcc -Dxxx], 字符"xxx"就是我们定义的宏。
比如下面的代码,当使用

gcc -DDEBUG -o build source.c

编译时,执行build文件时,就会输出调试信息。

{
#ifdef  DEBUG
	printf("This is a debug massage, line %d, file: %s", __LINE__,  __FILE__);
#endif
}

猜你喜欢

转载自blog.csdn.net/qq_877667836/article/details/82779741