g编译过程gccg参数详解
gcc 编译参数

gcc 编译参数
gcc 编译参数
以下为常用的GCC编译参数:
1.-c:仅编译不链接。
2. -o <file> :指定输出文件名。
3.-g:生成调试信息。
4. -Wall :开启所有警告信息。
5. -Werror :将警告视为错误。
6. -std=<version>:指定编译标准版本,如 -std=c99。
7. -I<dir> :添加头文件搜索路径。
8. -L<dir> :添加库文件搜索路径。
9. -l<lib> :链接指定的库文件,如 -lm 表示链接数学库。
10. -D<macro> :定义宏。
11. -U<macro> :取消定义宏。
12. -O<level> :优化级别,如 -O3 表示极限优化。
13. -pthread :启用 POSIX 线程库。
14.-fPIC:生成位置独立的目标文件。
15. -march=<arch> :生成指定架构的目标文件。
16.-m32/-m64:生成32位或64位目标文件。
17. -Wl,<option> :将选项传递给链接器。
18. -lm :表示链接数学库。
19. -lssl :表示链接 OpenSSL 库。
20. -lcrypto :表示链接加密函数库。
21. -lpthread :表示链接 POSIX 线程库。
22. -lstdc++ :表示链接 C++ 标准库。
gcc编译原理

gcc编译原理一、介绍GCC(GNU Compiler Collection)是一套由GNU计划开发的编程语言编译器。
它支持多种语言,如C、C++、Objective-C、Fortran、Ada等。
作为一个强大的编译器,了解GCC的编译原理对于理解如何生成可执行程序以及如何优化代码都至关重要。
二、GCC的基本编译过程GCC编译器的基本编译过程可以划分为以下几个阶段:1. 词法分析在这个阶段,GCC会将源代码分解为一个个记号(token),如关键字、标识符、常量等。
通过词法分析,编译器可以识别出源代码的基本元素,为后续步骤做准备。
2. 语法分析在语法分析阶段,GCC会根据语法规则将源代码转换为语法树(syntax tree)。
语法树由各个语法元素(如表达式、语句等)按照语法规则组织而成,用于表示源代码的结构和关系。
3. 语义分析在语义分析阶段,GCC会对语法树进行分析,检查语法上的错误,并进行类型检查等。
编译器会根据语义规则来判断源代码是否合法,并为后续的优化和代码生成做准备。
4. 优化在优化阶段,GCC会对源代码进行一系列的优化操作,以提高程序的性能。
这包括但不限于常量折叠、循环展开和消除无用代码等。
优化技术的应用使得生成的目标代码更加高效。
5. 代码生成在代码生成阶段,GCC会将优化后的中间代码(intermediate code)转化为目标代码(target code)。
目标代码可以是机器代码,也可以是汇编代码,取决于所选择的目标平台。
最终,目标代码会被链接成可执行程序。
三、GCC的优化原理GCC的优化过程可以分为三个主要阶段:1. 前端优化前端优化主要针对源代码,在词法分析、语法分析和语义分析阶段进行。
在这些阶段,GCC会尽可能早地去除源代码中的冗余和无效操作,简化抽象语法树(AST)的结构,并进行常量传播和值替换等。
这些优化可以减少后续的中间代码和目标代码中的冗余,提高优化的空间。
2. 中间代码优化中间代码优化是GCC优化的核心阶段。
arm-linux-gcc 常用参数讲解 gcc编译器使用方法

arm-linux-gcc常用参数讲解gcc编译器使用方法我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。
下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。
在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1. 预处理(Pre-Processing)2. 编译(Compiling)3. 汇编(Assembling)4. 链接(Linking)Linux程序员可以根据自己的需要让GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。
和其它常用的编译器一样,GCC也提供了灵活而强大的代码优化功能,利用它可以生成执行效率更高的代码。
以文件example.c为例说明它的用法0. arm-linux-gcc -o example example.c不加-c、-S、-E参数,编译器将执行预处理、编译、汇编、连接操作直接生成可执行代码。
-o参数用于指定输出的文件,输出文件名为example,如果不指定输出文件,则默认输出a.out1. arm-linux-gcc -c -o example.oexample.c-c参数将对源程序example.c进行预处理、编译、汇编操作,生成example.0文件去掉指定输出选项"-o example.o"自动输出为example.o,所以说在这里-o加不加都可以2.arm-linux-gcc -S -o example.sexample.c-S参数将对源程序example.c进行预处理、编译,生成example.s文件-o选项同上3.arm-linux-gcc -E -o example.iexample.c-E参数将对源程序example.c进行预处理,生成example.i文件(不同版本不一样,有的将预处理后的内容打印到屏幕上)就是将#include,#define等进行文件插入及宏扩展等操作。
gcc常用参数(静动态链接 优化 调试)

一、编译过程概览gcc编译器对程序的编译过程有四个阶段:预处理(preprocessing)、编译(com- pilation proper)、汇编(assembly)和链接(linking)。
预处理:对源文件(source file)进行预处理,进行宏定义的替换等。
编译:将进行完预处理的源文件编译成汇编文件(assembly file)。
将C源代码编译成汇编语言。
汇编:将汇编文件汇编成目标文件(object file)。
链接:将一个或多个目标文件链接成一个可执行的二进制文件(execute file)。
链接的目标文件中有且只有一个main函数,作为可执行文件的开始。
-E在预处理阶段之后停止,不进行编译。
输出是预处理之后的源码,默认发送到标准输出(standard output)。
输入文件格式为.c等,默认输出为标准输出。
-S在编译阶段之后停止,不进行汇编。
输出为每一个指定的未编译的输入文件的汇编代码文件。
输入文件格式为.c、.i等,输出文件格式为.s。
-c编译或者汇编源文件,不进行链接。
输出为每一个源文件的目标文件。
输入文件格式为.c、.i、.s,输出文件格式为.o。
-o filename-o指定输出文件的文件名,如果没有指定-o,则默认输出的可执行文件名是a.out,默认输出的source.suffix的汇编文件名为source.s、目标文件名位source.o。
默认的预处理后的源文件输出到标准输出。
main.cgcc –E main.c –o main.itali main.igcc –S main.i –o main.stail main.sps:gcc –S main.c –o main.s也是可以的。
gcc –c main.s –o main.ogcc main.o –o test./testps:gcc –c main.i(main.c) –o main.ogcc main.c(main.i main.s) –o test都是可以的二、预处理预处理阶段可以用到的一些选项。
gcc编译命令

gcc编译命令GCC(GNUCompilerCollection)是一种功能强大的编译器,它可以把源代码编译成可执行代码。
它是GNU具链的一部分,可以编译多种编程语言,包括C、C++、Java、Fortran、Ada等。
GCC提供了一系列的编译命令用于编译源代码并生成可执行的文件。
GCC编译命令的基本格式是:gcc [options] filename其中filename为源代码文件的名称,options是可选的参数,用以指定编译过程中的不同选项。
例如:gcc -c hello.c在上面的命令中,“-c”选项用于指定只预处理,编译和汇编源文件,而不进行链接。
GCC提供了很多有用的参数供我们选择,可以根据不同的需求执行不同的操作。
下面我们将介绍一些常用的编译命令及其参数:1、-c选项:编译预处理和汇编源文件,但不进行链接;2、-o选项:指定编译后的可执行文件的名称,如果不指定则使用默认的名称;3、-g选项:编译的时候包含调试信息;4、-Wall选项:编译的时候显示所有可能的警告信息;5、-lm选项:链接数学库;6、-O选项:指定优化的程度,从0到3,数字越大优化的越多;7、-static选项:编译成静态库;8、-D选项:定义宏;9、-pedantic选项:启用严格模式,禁止异常语法。
另外,GCC也支持一些高级特性,比如OpenMP、Pthreads等,使用这些特性可以极大的提高源代码的执行效率。
关于GCC的编译命令还有很多其他参数和特性,这里只列举了一些常用的参数,使用者可以根据自己的需要设置不同参数,以获得更好的编译效果。
GCC是一款功能强大的编译器,它提供了一系列编译命令,可以编译各种编程语言,并支持多种高级特性。
使用者可以根据自己的需要设置不同参数,以获得更好的编译效果。
gcc 常用参数

gcc 常用参数(实用版)目录1.概述2.常用参数分类2.1 编译选项2.2 链接选项2.3 运行选项3.编译选项示例3.1 输出文件3.2 优化3.3 调试4.链接选项示例4.1 库文件4.2 目标文件5.运行选项示例6.总结正文1.概述GCC(GNU Compiler Collection)是一个开源的编译器套件,支持多种编程语言,如 C、C++、Fortran 等。
GCC 提供了丰富的编译参数,可以根据需求灵活调整编译、链接和运行过程。
本文将介绍 GCC 的常用参数。
2.常用参数分类2.1 编译选项- 输出文件:-o 或 -o output_file,指定编译后输出文件。
- 优化:-O 或 -O2 或 -O3,分别表示优化程度从低到高的优化选项。
- 调试:-g,添加调试信息,便于调试程序。
- 编译语言:-x language,指定源文件的编程语言,如 -x c 或-x c++。
2.2 链接选项- 库文件:-l library_name,链接指定的库文件。
- 目标文件:-m,链接目标文件。
- 库目录:-Wl,-rpath,library_directory,指定库文件的目录。
2.3 运行选项- 运行程序:./output_file,运行编译后的程序。
- 运行参数:arg1 arg2 arg3,传递给程序的命令行参数。
3.编译选项示例- 输出文件:gcc -o example.out source.c,将源文件 source.c 编译为名为 example.out 的输出文件。
- 优化:gcc -O2 source.c,对源文件 source.c 进行优化编译。
- 调试:gcc -g source.c,为源文件 source.c 添加调试信息。
4.链接选项示例- 库文件:gcc -o example source.c -lmylib,链接名为 mylib 的库文件。
- 目标文件:gcc -o example source1.o source2.o,链接源文件 source1.c、source2.c 和目标文件 output.o。
gcc 32位编译参数
gcc 32位编译参数摘要:1.GCC 简介2.32 位编译参数的作用3.常见的32 位编译参数4.参数的实际应用案例5.总结正文:GCC(GNU Compiler Collection)是一个开源的编译器套件,广泛应用于各种操作系统和平台。
在32 位系统中,合理使用编译参数能够优化程序性能和代码可读性。
32 位编译参数主要针对32 位系统的特点进行优化,例如优化内存使用、提高代码执行效率等。
这些参数对于针对32 位系统进行开发的程序员非常重要。
常见的32 位编译参数包括:- `-m32`:指定编译器将源代码编译为32 位代码。
- `-march=i386`:指定目标处理器为i386 架构,适用于32 位系统。
- `-O2`:开启二级优化,提高编译速度和程序运行速度。
- `-fomit-frame-pointer`:省略函数调用帧指针,减小代码体积。
- `-ffunction-sections`:为每个函数生成一个独立的节,提高代码可读性。
- `-fdata-sections`:为每个数据块生成一个独立的节,优化内存布局。
以下是一个实际应用案例:```gcc -m32 -march=i386 -O2 -fomit-frame-pointer -ffunction-sections -fdata-sections input.c -o output```这个命令集使用了上述提到的多个参数,将输入.c 文件编译为32 位可执行文件。
通过合理搭配参数,程序员可以针对具体需求优化编译结果。
总之,了解和熟练使用32 位编译参数对于开发者在32 位系统中编写高效、可移植的代码具有重要意义。
GCC编译选项含义解析
GCC编译选项含义解析GCC 编译GCC的编译流程分为四个步骤,分别为:预处理(Pre-Processing)可以通过gcc -E -o hello.i查看中间结果编译(Compiling)汇编(Assembling)链接(Linking)gcc 命令只能编译C++源⽂件,⽽不能⾃动和C++程序使⽤的库链接。
因此,通常使⽤g++命令来完成C++程序的编译和链接,该程序会⾃动调⽤gcc实现编译。
1. 总体选项-c:只激活预处理、编译和汇编过程,但不做link,只⽣成⽬标⽂件-o:指定输出⽂件,未指定时,默认为a.out-S:只激活预处理和编译,⽣成.s的汇编⽂件-E:只激活预处理,需要重定向到⼀个⽂件⾥,gcc -E hello.c > pre_hello.i2. 调试选项-g:以操作系统的本地格式(stabs, COFF, XCOFF等)产⽣调试信息,以便GDB使⽤-glevel:调试信息⽣成级别,默认为2,如-g3level=1,输出少量调试信息,没有局部变量和⾏号信息level=3,输出较多调试信息3. 预处理器选项-Dmacro:相当于C语⾔中的#define macro-Dmaroc=defn:定义宏macro的内容为defn,相当于C语⾔中#define marco=defn-Umacro:取消宏macro,-U 选项在所有-D 选项之后使⽤-include file:当某个⽂件需要另⼀个⽂件时,可以⽤它来设定,功能类似#include <filename>,如gcc hello.c -include /root/ss.h4. 链接器选项-static:将禁⽌使⽤动态库-shared:指定⽣成⼀个共享⽬标⽂件,常搭配-fPIC使⽤-Wl,option:把选项option传递给链接器;如果option包含逗号,会分隔为多个选项-symbolic:建⽴共享⽬标⽂件时候,把引⽤绑定到全局符号上5. ⽬录选项-l{library]}:指定编译的时候使⽤的库,如gcc -lcurses hello.c,链接时使⽤-L{dir}:指定编译时,搜索库的路径。
scons用户指南翻译(附gccg++参数详解)
scons⽤户指南翻译(附gccg++参数详解)scons⽤户指南翻译官⽹⽂档=====================================UNIX系统开发-gcc参数详解[介绍]gcc and g++分别是gnu的c & c++编译器 gcc/g++在执⾏编译⼯作的时候,总共需要4步1.预处理,⽣成.i的⽂件[预处理器cpp]2.将预处理后的⽂件不转换成汇编语⾔,⽣成⽂件.s[编译器egcs]3.有汇编变为⽬标代码(机器代码)⽣成.o的⽂件[汇编器as]4.连接⽬标代码,⽣成可执⾏程序[链接器ld][参数详解]-x language filename 设定⽂件所使⽤的语⾔,使后缀名⽆效,对以后的多个有效.也就是根据约定C语⾔的后缀名称是.c的,⽽C++的后缀名是.C或者.cpp,如果你很个性,决定你的C代码⽂件的后缀名是.pig 哈哈,那你就要⽤这个参数,这个参数对他后⾯的⽂件名都起作⽤,除⾮到了下⼀个参数的使⽤。
可以使⽤的参数吗有下⾯的这些 `c', `objective-c', `c-header', `c++', `cpp-output', `assembler', and `assembler-with-cpp'. 看到英⽂,应该可以理解的。
例⼦⽤法: gcc -x c hello.pig-x none filename 关掉上⼀个选项,也就是让gcc根据⽂件名后缀,⾃动识别⽂件类型 例⼦⽤法: gcc -x c hello.pig -x none hello2.c-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj⽂件 例⼦⽤法: gcc -c hello.c 他将⽣成.o的obj⽂件-S 只激活预处理和编译,就是指把⽂件编译成为汇编代码。
例⼦⽤法 gcc -S hello.c 他将⽣成.s的汇编代码,你可以⽤⽂本编辑器察看-E 只激活预处理,这个不⽣成⽂件,你需要把它重定向到⼀个输出⽂件⾥⾯. 例⼦⽤法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,⼀个hello word 也要与处理成800⾏的代码-o 制定⽬标名称,缺省的时候,gcc 编译出来的⽂件是a.out,很难听,如果你和我有同感,改掉它,哈哈 例⼦⽤法 gcc -o hello.exe hello.c (哦,windows⽤习惯了) gcc -o hello.asm -S hello.c-pipe 使⽤管道代替编译中临时⽂件,在使⽤⾮gnu汇编⼯具的时候,可能有些问题 gcc -pipe -o hello.exe hello.c-ansi 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁⽌⼀些asm inline typeof关键字,以及UNIX,vax等预处理宏,-fno-asm 此选项实现ansi选项的功能的⼀部分,它禁⽌将asm,inline和typeof⽤作关键字。
gcc命令的参数
gcc命令的参数
GCC是GNU编译器套件(GNU Compiler Collection)的缩写,是一种常用的开源编译器工具。
下面是一些常用的GCC命令参数:
1. `-o <output>`:指定输出文件的名称。
2. `-c`:只进行编译,不进行链接操作。
3. `-g`:生成调试信息,以便在调试程序时使用。
4. `-Wall`:启用所有警告信息。
5. `-Werror`:将所有警告视为错误,编译器将警告视为错误并停止编译。
6. `-I <dir>`:在指定目录中查找头文件。
7. `-L <dir>`:在指定目录中查找库文件。
8. `-l <library>`:链接指定的库文件。
9. `-D <macro>`:定义预处理宏。
10. `-E`:只进行预处理操作,生成预处理后的源代码。
11. `-S`:只进行编译操作,生成汇编代码。
12. `-O<level>`:优化选项,可以设置优化级别(例如O0、O1、O2、O3等)。
13. `-std=<standard>`:指定要使用的C/C++的标准版本。
14. `-Wl,<option>`:将`<option>`作为链接器参数传递。
这只是一些常见的GCC命令参数,实际上GCC有很多选项和参数可以使用。
您可以通过运行`gcc --help`或`gcc -v`命令来查看更详细的参数列表和说明。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
g++编译过程gcc/g++参数详解
g++编译命令选项
gcc/g++在执行编译工作的时候,总共需要4步
1.预处理;生成.i的文件:g++ -E Test.cpp > Test.i [预处理器cpp];-E只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里,才能看到改版后的文件内容。
(工作:如注释的消除,头文件的加载包含、文本替换;)
2.编译;生成文件.s.g++ -S Test.cpp 将预处理后的文件转换成汇编语言,生成文件.s;[编译器egcs](生成Test.s 文件,.s文件表示是汇编文件,用编辑器打开就都是汇编指令。
)
3.由汇编变为目标代码(机器代码)生成.o的文件g++ -c Test.cpp [汇编器as](.o是GCC生成的目标文件,除非你是做编译器和连接器调试开发的,否则打开这种.o没有任何意义。
)
4.连接;连接目标代码生成可执行程序[链接器ld] g++ Test.o -o Test -l ACE (将.o文件与所需的库文件链接整合形成可执行文件。
至此完成。
)[链接器ld]
[参数详解]
-x language filename
设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根
据约定C语言的后缀名称是.c的,而C++的后缀名是.C或者.cpp,如果
你很个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这
个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数
的使用。
可以使用的参数吗有下面的这些
`c’, `objective-c’, `c-header’, `c++’, `cpp-output’,
`assembler’, and `assembler-with-cpp’.
看到英文,应该可以理解的。
例子用法:
gcc -x c hello.pig
-x none filename
关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型例子用法:
gcc -x c hello.pig -x none hello2.c
-c
只激活预处理,编译,和汇编,也就是他只把程序做成obj文件
例子用法:
gcc -c hello.c
他将生成.o的obj文件
-S
只激活预处理和编译,就是指把文件编译成为汇编代码。
例子用法
gcc -S hello.c
他将生成.s的汇编代码,你可以用文本编辑器察看
-E
只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面.
例子用法:
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
慢慢看吧,一个hello word 也要与处理成800行的代码
-o
制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果你和我有同感,改掉它,哈哈
例子用法
gcc -o hello.exe hello.c (哦,windows用习惯了)
gcc -o hello.asm -S hello.c
-pipe
使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问题
gcc -pipe -o hello.exe hello.c
-ansi
关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一
些asm inline typeof关键字,以及UNIX,vax等预处理宏,
-fno-asm
此选项实现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作关键字。
-fno-strict-prototype
只对g++起作用,使用这个选项,g++将对不带参数的函数,都认为是没有显式的对参数的个数和类型说明,而不是没有参数.
而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说明的类型
-fthis-is-varialble
就是向传统c++看齐,可以使用this当一般变量使用.
-fcond-mismatch
允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型-funsigned-char
-fno-signed-char
-fsigned-char
-fno-unsigned-char
这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前两个参数)或者signed char(后两个参数)
-include file
包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以用它设定,功能就相当于在代码中使用#include<filename>
例子用法:
gcc hello.c -include /root/pianopan.h
-imacros file
将file文件的宏,扩展到gcc/g++的输入文件,宏定义本身并不出现在输入文件中
-Dmacro
相当于C语言中的#define macro
-Dmacro=defn
相当于C语言中的#define macro=defn
-Umacro
相当于C语言中的#undef macro
-undef
取消对任何非标准宏的定义
-Idir
在你是用#include"file"的时候,gcc/g++会先在当前目录查找你所制定的头文件,如果没有找到,他回到缺省的头文件目录找,如果使用-I制定了目录,他回先在你所制定的目录查找,然后再按常规的顺序去找.
对于#include<file>,gcc/g++会到-I制定的目录查找,查找不到,然后将到系统的缺省的头文件目录查找
-I-
就是取消前一个参数的功能,所以一般在-Idir之后使用
-idirafter dir
在-I的目录里面查找失败,讲到这个目录里面查找.
-iprefix prefix
-iwithprefix dir
一般一起使用,当-I的目录查找失败,会到prefix+dir下查找
-nostdinc
使编译器不再系统缺省的头文件目录里面找头文件,一般和-I联合使用,明确限定头文件的位置
-nostdin C++
规定不在g++指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建libg++库使用
-C
在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程序,用这个很方便的
-M
生成文件关联的信息。
包含目标文件所依赖的所有源代码
你可以用gcc -M hello.c来测试一下,很简单。
-MM
和上面的那个一样,但是它将忽略由#include<file>造成的依赖关系。
-MD
和-M相同,但是输出将导入到.d的文件里面
-MMD
和-MM相同,但是输出将导入到.d的文件里面
-Wa,option
此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选项,然后传递给会汇编程序
-Wl.option
此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选项,然后传递给会连接程序.
-llibrary
制定编译的时候使用的库
例子用法
gcc -lcurses hello.c
使用ncurses库编译程序
-Ldir
制定编译的时候,搜索库的路径。
比如你自己的库,可以用它制定目录,不然
编译器将只在标准库的目录找。
这个dir就是目录的名称。
-O0
-O1
-O2
-O3
编译器的优化选项的4个级别,-O0表示没有优化,-O1为缺省值,-O3优化级别最高
-g
只是编译器,在编译的时候,产生条是信息。
-gstabs
此选项以stabs格式声称调试信息,但是不包括gdb调试信息.
-gstabs+
此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息.
-ggdb
此选项将尽可能的生成gdb的可以使用的调试信息.
-static
此选项将禁止使用动态库,所以,编译出来的东西,一般都很大,也不需要什么动态连接库,就可以运行.
-share
此选项将尽量使用动态库,所以生成文件比较小,但是需要系统由动态库.
-traditional
试图让编译器支持传统的C语言特性。