热度 2||
版权声明:本文为博主原创文章,未经博主允许不得转载,交流QQ:2912615383
GCC的基本用法很简单:
gcc [选项] 文件名
GCC后面有很多编译控制选项,使得GCC可以根据不同的参数进行不同的编译处理,可供GCC调用的参数大约有100多个,但实际常用并不多,这里简单的总结一下,以方便使用。
Ø
-c : 只编译不链接,编译器只是将输入的.c等源代码文件生成.o为后缀的目标文件,通常用于编译不包含主程序的子程序文件
Ø
-S : 只对文件进行编译,不汇编和链接
Ø
-E : 只对文件进行预处理,不编译汇编和链接
Ø
-o filename
: 确定输出文件的名称为filename,这个名称不能我源文件同名,如果不给了这个选项,gcc就给出预设的可执行文件a.out
Ø
-g : 产生符号调试工具(GNU的gdb)所必需的符号信息,要想对源代码进行调试,就必需加入这个选项,g也分等级,默认是-g2,-g1是最基本的,-g3包含宏信息。
Ø
-DFOD=BAR : 在命令行定义预处理宏FOD,值为BAR
Ø
-O : “O”是大写,对程序进行优化编译,链接,采用这个选项,整个源代码会在编译,链接过程中进行优化处理,这样产生的可执行文件是执行效率可以提高,但是编译,链接的速度就相应的要慢一些。
Ø
-ON : 指定代码的优化等级N,可取值为0、1、2、3;O0没有优化等级,O3优化等级最高。
Ø
-Os : 使用-O2的优化部分选项,同时对代码尺寸进行优化。
Ø
-Idirname
: 将dirname目录添加到程序头文件搜索列表中,是在预编译过程中使用的参数
Ø
-L
dirname : 将dirname目录加入到库文件的搜索目录列表中
Ø
-l FOO : 链接名为libFOO的函数库
Ø
-static
: 链接静态库
Ø
-ansi : 支持ANSI/ISO C的标准语法,取消GNU语法中与该标准相冲突的部分
Ø
-w : (小写)关闭所有警告,不建议使用。
Ø
-W : (大写)开启所有gcc能提供的警告
Ø
-werror
: 将所有警告转换为错误,开启该选项,遇到警告都会中止编译
Ø
-v : 显示gcc执行时的详细过程,GCC及其相关程序的版本号。
顺便说一下动态链接与静态链接
?
动态链接使用动态链接库进行链接,生成的程序在执行的时候需要加载所需要的动态库才能运行。动态链接生成的程序小巧,但是必须依赖动态库,否则无法执行。
?
Linux下的动态链接库实际是共享目标文件,一般是.so文件,类似于windows下的.dll文件
?
静态链接使用静态库进行链接,生的程序包含程序运行所需要的全部库,可以直接运行,不过体积较大。
?
Linux下静态库是汇编产生的.o文件的集合,一般以.a文件形式出现。
最后,再吼一下俺的口号:
每天进步一点点,开心多一点^_^
--2017年3月22日 13:16:33