您的位置:首页 > 其它

GCC编译选项研究(1)

2009-09-15 21:32 183 查看
GCC -- GNU C & C++ Compiler

一、使用

gcc [option|filename]...

g++ [option|filename]...

二、GCC的处理步骤

(1)预处理:对预处理指令和宏进行处理

(2)编译:将代码编译成汇编代码

(3)汇编:将汇编代码生成二进制文件

(4)连接:将目标二进制文件进行连接形成可执行程序

三、gcc和g++

gcc认为预处理后的文件是C文件,以C形式连接

g++认为预处理后的文件是C++文件,以C++形式连接

四、文件扩展名及后续操作

.c c程序;预处理、编译、汇编

.C c++程序;预处理、编译、汇编

.cc c++程序;预处理、编译、汇编

.cxx c++程序;预处理、编译、汇编

.m objective-c程序;预处理、编译、汇编

.i 预处理后的C文件;编译、汇编

.ii 预处理后的C++文件;编译、汇编

.s 汇编语言源程序;汇编

.S 汇编语言源程序;预处理,汇编

传递给链接器的文件.o,.a文件

.o 目标文件

.a 静态库文件

五、总体选项

(1)-x 指明输入文件的语言(不从扩展名得到)(c、objective-c、c++、assembler、none等)

g++ -x c ctest.c

(2)-o 输出文件

g++ -o ctest.o ctest.c

(3)-v 显示编译阶段的详细信息

g++ -v -o ctest.o ctest.c

(4)-E 预处理后便停止,送标准输出(不产生文件)

g++ -E ctest.c

(5)-S 编译后便停止,不汇编;对于输入的非汇编语言文件,产生汇编语言文件(.s文件)

g++ -S ctest.c

(6)-c 编译或汇编文件,不作链接;输出目标文件(.o文件)

g++ -c ctest.c

(7)不加-E、-S、-c,则预处理、编译、汇编、链接

g++ -o ctest ctest.c,产生可执行文件

六、语言选项(控制编译器可接受的C方言)

(1)-ansi 支持标准的ANSI C程序

(2)-fno-asm 不把asm、inline、typeof当关键字

(3)-fno-builtin 不接受不是两个下划线开头的内建函数

(4)-fdollars-in-identifiers 允许$作为标识符

(5)-fno-dollars-in-identifiers 不允许$作为标识符

(6)-fall-virtual 所有可能的成员函数黙认为虚函数

(7)-fthis-is-variable 允许对this赋值

(8)-funsigned-char 将char定义为无符号的

(9)-fsigned-char将char 定义为有符号的 -fno-unsigned-char

(10)-funsigned-bitfileds、-fno-signed-bitfields 定义位域为无符号的

(11)-fsigned-bitfields、-fno-unsigned-bitfields 定义位域为有符号的

(12)-fwritable-strings 将字符串常量放到可写数据段

还有其他一些语言选项,见GCC手册
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: