关于GCC

本文参考:

  • gcc编译器学习记录
  • gcc的使用简介与命令行参数说明

1. 什么是GCC?

The GNU Compiler Collection (GCC) is a compiler system produced by the GNU Project supporting various programming languages.
—— wiki

GCC是一套支持多语言的编辑器。它原本只能处理C语言。GCC很快地扩展,变得可处理C++。之后也变得可处理Fortran、Pascal、Objective-C、Java、Ada,以及Go与其他语言。

2. 使用

最简单的使用为:

gcc hello.c

结果输出a.out可执行文件。

-o output_filename

这是最常用的编译选项,用于指定要生成的可执行文件的名称,各参数之间的相对位置无关,但是-o之后空格紧跟所指定的文件名。

gcc -o hello hello.c
等效于
gcc hello.c -o hello

编译出的可执行文件,在Windows下就是exe(executive)。但Linux下,后缀名无限制。一般不指定后缀就可以了。

-g

用于给生成的可执行文件加上调试信息,只有这样才可使用gdb调试。

gcc -g -o hello hello.c

-c

只编译,不链接成为可执行文件。编译器只是由输入的 .c 等源代码文件生成对应的 .o 为后缀的目标文件,通常用于编译不包含主程序的子程序文件。

gcc -c hello.c

效果生成hello.o

-Idirname

将 dirname 所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。

说明:
C程序中的头文件包含两种情况:

#include 
#include "stdio.h"

其中,使用尖括号(<>),预处理程序 cpp 在系统默认包含文件目录(如/usr/include)中搜索相应的文件;使用双引号,预处理程序 cpp 首先在当前目录中搜寻头文件,如果没有找到,就到指定的 dirname 目录中去寻找。在程序设计中,如果需要的头文件分别分布在不同的目录中,就需要逐个使用 -I 选项给出搜索路径。

-l/home/jelly/myheader

-Ldirname

将dirname所指出的目录加入到程序函数库文件的目录列表中,是在链接过程中使用的参数。在默认状态下,链接程序 ld 在系统默认路径中(如 /usr/lib)寻找所需要的库文件。这个选项告诉链接程序,首先到 -L 指定的目录中去寻找,然后到系统默认路径中寻找;如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。

-L/home/jelly/mylib

-lname

链接时装载名为 libname.a 的函数库。该函数库位于系统默认的目录或者由** -L 选项确定的目录下**。

-lm 

表示链接名为 libm.a 的数学函数库

-Wall

用于产生警告信息。

你可能感兴趣的:(关于GCC)