GCC最初是一个C/C++语言的编译器,是GNU project C and C++ Compiler的缩写。现在已经可以支持包括Object-C, Fortran, Ada, Java等多种开发语言的开发, GCC的名称也改为GNU Compiler Collection。但是GCC最主要的用途还是用来编译C/C++程序。
首先需要了解一个C/C++程序从开始编码到生成可执行的二进制文件至少需要经过四个步骤:
大多数人之所以没有看到过这些是因为GCC已经帮我在后台隐式做了这些工作,我们一般都是直接使用GCC不加任何参数直接编译的。其实,只通过GCC你就可以控制上面的每一个细节。你可以简单的编写一个HelloWorld.c的文件来完成下面的工作。
1.预处理, 预处理主要对程序的预处理指令进行处理,预处理指令是指那些在源程序中由#开头的指令。GCC可以通过-E选项使GCC在生 成预处理文件后停止:
$gcc -E hello.c -o hello.i
2.编译。-S选项制定GCC在生成汇编文件后停止:
$gcc -S hello.c -o hello.s
3.汇编。-c选项指定GCC在生成目标文件后停止:
$gcc -c hello.s -o hello.o
4.链接。生成可执行文件
$gcc hello.o -o hello
以下是GCC的常用选项
-g 生成调试信息,便于gdb对生成的程序进行调试
-O[0,1,2,3] 对生成的代码进行优化,中括号中是优化级别,默认为2级优化
-Idir 在编译程序时增加一个搜索有文件的额外目录dir
-Ldir 在编译源文件时增加一个搜索库文件的额外目录dir
-llibrary 在编译源文件时增加一个额外的库文件,库文件名称为library.a
-w 禁止所有的警告
分享到:
相关推荐
gcc命令详解gcc命令详解gcc命令详解
GCC/G++ 常用命令大全 linux GCC/G++ 命令大全 GCC/G++ 常用命令大全 linux GCC/G++ 命令大全
linux gcc使用详解,解释的很详细,带示例.
GCC 命令行详解 1。gcc包含的c/c++编译器 gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,一般c程序就用gcc编译,c++程序就用g++编译 2。gcc的基本用法 gcc test.c这样将编译出一个名为a.out的程序 gcc test.c ...
GCC编译命令 Gcc命令行详解 Gcc命令行详解 Gcc命令行详解
gcc命令行详解[参考].pdf
GCC使用详解,很详细的教程,命令很全,很适合初学者。
linux下的编译工具,常用的gcc命令参数详细解释,用法和每个参数的含义
这篇文档是我的关于gcc参数的笔记,我很怀念dos年代我用小本子,纪录所有的dos 命令的参数.哈哈,下面的东西可能也不是很全面,我参考了很多的书,和gcc的帮助.不全的原因是,有可能我还没有看到这个参数,另一种原因是,我...
(‘target’目的文件)是从哪些别的 文件(‘dependencies’依靠文件)中产 生的,用什么命令 来进行 这个产生过程。 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将...
gcc参数详解 GCC常用命令描述 GCC中文手册 gcc安装
本文为原创介绍GCC 编译C语言过程以及相关工具、编译选项的详解,一篇搞定,不用走弯路网络搜索
gcc 详细讲解了gcc的使用及常用命令 值得大家看一下
GCC工作指导文档,Linux命令详解等
linux上的C-C++编译器gcc-egcs详解 使用GCC很有必要
而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和 ...
Linux 中最重要的软件开发工具是 GCC.GCC是 GNU的 C和 C++编译器。实际上,GCC 能够编译三种语言:C 、C++ 和ObjectC (C 语言的一种面向对象扩展)。利用 gcc命令可同时编译并连接 C和 C++源程序。
4、连接阶段,通常会用g++来完成,这是因为gcc命令不能自动和c++程序使用的库连接。 gcc/g++在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件[预处理器cpp] 2.将预处理后的文件转换成汇编语言,生成文件....
GCC_中文手册、gcc命令大全、Makefile编程、makefile教程(中文版)、makefile详解、跟我一起写Makefile、gdb常用命令
而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员 来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。因此,有效的利用make和 ...