GCC 参数详细介绍
gcc是gnu compiler collection 的简称,他包含了多种语言的编译器,如C, C++,Objective-C, Objective-C++, Java, Fortran和Ada。但每种编译器的名字不一样,gcc andg++ 分别是 gnu 的 c & c++ 编译器
gcc/g++ 在执行编译工作的时候,总共需要 4 步
1. 预处理, 生成 .i 的文件 [ 调用预处理器 cpp]
2. 将预处理后的文件转换成汇编语言 , 生成文件 .s[ 调用编译器 gcc/egcs]
3. 有汇编变为目标代码 ( 机器代码 ) 生成 .o 的文件 [ 调用汇编器 as]
4. 连接目标代码 , 生成可执行程序 [ 调用链接器 ld]
常见的gcc参数介绍
-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 等预处理宏 ,
-std c99
-rdynamic
-lxx
-Lxx
-Ixx
优化选项
-o FILE
-O0
-O 或 -O1
-O2
-O3
-shared
-static
-w
-Wall
‘-Wcomment’
‘-Wformat’
‘-Wunused’
‘-Wimplicit’ This option warns about any functions that are usedwithout being declared.
‘-Wreturn-type’ This option warns about functions that