GCC常用参数

简介: GCC--GNU C Compiler c语言编译器(远不止c语言) 介绍: 作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。
GCC--GNU C Compiler c语言编译器(远不止c语言)

介绍:

作为自由软件的旗舰项目,Richard Stallman 在十多年前刚开始写作 GCC 的时候,还只是把它当作仅仅一个C 程序语言的编译器;GCC 的意思也只是 GNU C Compiler 而已。经过了这么多年的发展,GCC 已经不仅仅能支持 C 语言;它现在还支持 Ada 语言,C++ 语言,Java 语言,Objective C 语言,Pascal 语言,COBOL 语言,以及支持函数式编程和逻辑编程的 Mercury 语言,等等。而 GCC 也不再单只是 GNU C 语言编译器的意思了,而是变成了 GNU Compiler Collection 也即是 GNU 编译器家族的意思了 
另一方面,说到 GCC 对于各种硬件平台的支持,概括起来就是一句话:无所不在。几乎所有有点实际用途的硬件平台,甚至包括有些不那么有实际用途的硬件平台,比如 Don Knuth 设计的 MMIX 计算机,GCC 都提供了完善的支持。 
如果把我们自己的程序语言的实现建立于 GCC 之上,也立刻使得我们的程序语言的实现版本可以运行在几乎所有有用的硬件平台之上。这对于程序语言的作者来说,也是一个确实的有极大诱惑力的好处。
 
GCC常用选项

选项 
含义

--help 
--target-help 
显示 gcc 帮助说明。‘target-help’是显示目标机器特定的命令行选项。

--version 
显示 gcc 版本号和版权信息 。

-o outfile 
输出到指定的文件。

-x language 
指明使用的编程语言。允许的语言包括:c c++ assembler none 。 ‘none’意味着恢复默认行为,即根据文件的扩展名猜测源文件的语言。

-v 
打印较多信息,显示编译器调用的程序。

-### 
与 -v 类似,但选项被引号括住,并且不执行命令。

-E 
仅作预处理(code.i),不进行编译、汇编和链接。

-S 
仅编译到汇编语言(code.s),不进行汇编和链接。

-c 
编译、汇编到目标代码(code.o),不进行链接。

-pipe 
使用管道代替临时文件。

-combine 
将多个源文件一次性传递给汇编器。

 

其他GCC选项

更多有用的GCC选项:

命令 
描述

-shared 
生成共享目标文件。通常用在建立共享库时。
-static
禁止使用共享连接。

-l library 
-llibrary 
进行链接时搜索名为library的库。 
例子: $ gcc test.c -lm -o test

-Idir 
把dir 加入到搜索头文件的路径列表中。 
例子: $ gcc test.c -I../inc_dir -o test

-Ldir 
把dir 加入到搜索库文件的路径列表中。 
例子: $ gcc -I/home/foo -L/home/foo -ltest test.c -o test

-Dname 
预定义一个名为name 的宏,值为1。 
例子: $ gcc -DTEST_CONFIG test.c -o test

-Dname =definition 
预定义名为name ,值为definition 的宏。

-ggdb 
-ggdblevel 
为调试器 gdb 生成调试信息。level 可以为1,2,3,默认值为2。

-g 
-glevel 
生成操作系统本地格式的调试信息。-g 和 -ggdb 并不太相同, -g 会生成 gdb 之外的信息。level 取值同上。

-Wall 

会打开一些很有用的警告选项,建议编译时加此选项。

-w 
禁止显示所有警告信息。
 

Optimization

-O0 
禁止编译器进行优化。默认为此项。

-O 
-O1 
尝试优化编译时间和可执行文件大小。

-O2 
更多的优化,会尝试几乎全部的优化功能,但不会进行“空间换时间”的优化方法。

-O3 
在 -O2 的基础上再打开一些优化选项:-finline-functions, -funswitch-loops 和 -fgcse-after-reload 。

-Os 
对生成文件大小进行优化。它会打开 -O2 开的全部选项,除了会那些增加文件大小的。
 
Standard

-ansi 
支持符合ANSI标准的C程序。这样就会关闭GNU C中某些不兼容ANSI C的特性。

-std=c89 
-iso9899:1990 
指明使用标准 ISO C90 作为标准来编译程序。

-std=c99 
-std=iso9899:1999 
指明使用标准 ISO C99 作为标准来编译程序。

目录
相关文章
|
8月前
|
存储 编译器 C语言
深入理解GCC 和 G++ 编译器
GCC 和 G++ 是 GNU 工具链中的核心编译器,支持 C 和 C++ 程序开发。本文详细介绍其编译流程、常用选项及动态链接与静态链接的区别。编译过程分为预处理、编译、汇编和链接四个阶段,每个阶段有特定任务和命令选项。常用选项如 `-E`、`-S`、`-c` 和 `-o` 分别用于预处理、生成汇编代码、生成目标文件和指定输出文件。动态链接节省空间且易于更新,但依赖运行时库;静态链接独立高效,但文件较大且更新困难。合理选择优化选项(如 `-O0` 至 `-O3`)可提升程序性能。掌握这些知识有助于开发者更高效地编写、调试和优化代码。
367 23
深入理解GCC 和 G++ 编译器
|
前端开发 C语言
gcc动态库升级
gcc动态库升级
|
11月前
|
编译器 Linux C语言
gcc的编译过程
GCC(GNU Compiler Collection)的编译过程主要包括四个阶段:预处理、编译、汇编和链接。预处理展开宏定义,编译将代码转换为汇编语言,汇编生成目标文件,链接将目标文件与库文件合并成可执行文件。
330 11
|
编译器 开发工具 C语言
Gcc 链接文件
Gcc 链接文件
107 4
|
编译器 C语言 C++
MinGW安装gcc
MinGW安装gcc
338 0
|
C语言
gcc的简易用法(编译、参数与链接)
【5月更文挑战第14天】gcc的简易用法(编译、参数与链接)。
125 1
|
Unix Java 编译器
安装gcc
【5月更文挑战第14天】安装gcc。
383 1
|
自然语言处理 编译器 Go
GCC:GNU编译器
GCC:GNU编译器
302 0
|
Java 编译器 Linux
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
技术经验解读:【转载】详解GCC的下载和安装(源码安装)
480 0
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令
关于如何解决mingw64安装后配置完环境变量仍然执行不了gcc命令