gcc最基本的用法是∶gcc [options] [filenames]
程序编译的四个过程:预处理、编译、汇编、连结
基本参数说明:
-E:只进行预处理
-S:只进行编译;产生汇编代码
-c:只编译、汇编,不连接成为可执行文件,编译器只是由输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件
; -o
output_filename:确定输出文件的名称为output_filename,同时这个名称不能和源文件同名。如果不给出这个选项,gcc就给出预设的可执行文件a.out
; -v:打印程序的编译过程,以及编译器的版本
; -g:产生符号调试工具(GNU的gdb)所必要的符号资讯,要想对源代码进行调试,必须加入这个选项
; -O:对程序进行优化编译、连接
; -O2:比-O更好的优化
; -Idirname:将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。C程序中的头文件包含两种情况∶
A)#include <>
B)#include “myinc.h”
其中,A类使用尖括号(< >),B类使用双引号(“
”)。对于A类,预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于B类,cpp在当前目录中搜寻头文件,这个选项的作用是告诉cpp,如果在当前目录中没有找到需要的文件,就到指定的dirname目录中去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,就需要逐个使用-I选项给出搜索路径
;
-Ldirname:将dirname所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中使用的参数。在预设状态下,连接程序ld在系统的预设路径中(如/usr/lib)寻找所需要的档案库文件,这个选项告诉连接程序,首先到-L指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给出相应的存放目录
;
-lname:在连接时,装载名字为“libname.a”的函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。例如,-lm表示连接名为“libm.a”的数学函数库
; -nostdlib:不使用系统默认的startup
file和系统函数库,仅使用自己定义的库进行连结,某些特定的平台可能需要系统默认的库libgcc.a避免一些系统错误;因此当使用此命令是一般需要将libgcc.a库另外指定进行连结
; .ld(link description)文件:ld文件是指出连接时内存映象格式的文件
大部分情况下各种参数混合使用时的顺序不会有什么影响,但是当同一个参数连续使用时将产生不同的效应,例如:-L命令,不同的顺序则编译起搜索的顺序不同
原贴地址:http://publishblog.blogchina.com/blog/tb.b?diaryID=3564312
>> 本文固定链接: http://www.vcgood.com/archives/134
Gcc好用不?
还算容易上手。
比VC和BCB困难,第一次使用要配置环境,比较麻烦。用到一定程度会觉得非常复杂,功能太强大。
但是用熟了会觉得很好用