GCC(GNU Compiler Collection)是由GNU开发的编程语言编译器,最初是作为GNU操作系统的编译器编写的。GCC是一个编译器套件,包含很多软件包,支持多种语言编译。GCC的官网是http://gcc.gnu.org
&说明:本章内容为通用知识,关于GCC编译器的讲解将在第一章搭建的环境中进行演示,适用于EflBoard提供的所有环境。
GCC的安装
ubuntu默认安装了GCC,但软件包可能不全,为了确保有一个基本完善的本地编译环境,可安装build-essential软件包。在确保Linux能联网的情况下,在终端输入如下安装命令:
| elf@ubuntu:~$ sudo apt-get install build-essential |
也可以通过简单的命令安装gcc:
| elf@ubuntu:~$ sudo apt install gcc |
GCC的编译选项
GCC的基本用法是:gcc [选项] 文件名
GCC有很多编译控制选项,使得GCC可以根据不同的参数进行不同的编译处理,我们简单介绍一些常用的基本控制选项。
| 选项 | 说明 |
| -c | 只编译不链接。只将.c文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件 |
| -S | 只对文件进行编译,不汇编和链接 |
| -E | 只对文件进行预处理,不编译汇编和链接 |
| -o outname | 确定输出文件的名称为outname,不能和源文件同名。如果不给出这个选项,gcc给出预设的可执行文件a.out |
| -g | 产生符号调试工具(GNU的gdb)所必要的符号信息,要对源码进行调试必须加入这个选项。G也分等级,默认是-g2,-g1是最基本的,-g3包含宏信息 |
| -O | 对程序进行优化编译链接。采用这个选项,整个源代码会在编译链接过程中进行优化处理,这样产生的可执行文件的效率可以提高,但是编译链接的速度相对要慢一些。 |
| -I dirname | 将dirname目录加入到程序头文件搜索目录列表中,是在预编译过程中使用的参数。注意:此处的I为i的大写 |
| -L dirname | 将dirname目录加入到库文件的搜索目录列表中 |
| -l FOO | 链接名为libFOO的函数库。注意:此处的l为L的小写 |
| -static | 链接静态库 |
| -ansi | 支持ANSI/ISO C的标准语法,取消GNU的语法中与该标准相冲突的部分 |
| -w | 关闭所有警告,不建议使用 |
| -W | 开启所有gcc提供的警告 |
| -werror | 将所有警告转换为错误,开启该选项,遇到警告都会终止编译 |
| -v | 显示执行的详细过程,gcc以及相关程序的版本号 |
阅读全文
357