gcc 与 g++ 分别是 gnu 的 c & c++ 编译器 gcc/g++ 在执行编译工作的时候,总共需要4步:
- 预处理,生成
.i
的文件 [预处理器cpp] - 将预处理后的文件转换成汇编语言,生成文件
.s
[编译器egcs] - 由汇编变为目标代码(机器语言)生成
.o
的文件 [汇编器as] - 连接目标代码,生成可执行程序 [链接器ld]
参数详解:
1、-x language filename:设定文件所使用的语言, 使后缀名无效, 对以后的多个有效。也就是根据约定 C 语言的后缀名称是 .c 的,而 C++ 的后缀名是 .C 或者 .cpp,如果你很个性,决定你的 C 代码文件的后缀名是 .pig ,在你使用这个参数后,这个参数对它后面的文件名都起作用,直到下一个参数的使用。
可以使用的参数有下面的这些:'c', 'objective-c', 'c-header', 'c++', 'cpp-output', 'assembler', 'assembler-with-cpp'
gcc -x c hello.pig
2、-x none filename:关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型 。
gcc -x c hello.pig -x none hello2.c
3、-c:只激活预处理、编译、和汇编,也就是他只把程序做成obj文件
gcc -c hello.c
将生成 .o 的 obj 文件
4、-S:只激活预处理和编译,就是指把文件编译成为汇编代码
gcc -S hello.c
将生成 .s 的汇编代码,可以用文本编辑器查看
5、-E:只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面
gcc -E hello.c > pianoapan.txt
gcc -E hello.c | more
慢慢看吧,一个 hello word 也会处理成800行的代码
6、-o:制定目标名称,默认的时候,gcc 编译出来的文件是 a.out
gcc -o hello.exe hello.c
gcc -o hello.asm -S hello.c
7、-pipe:使用管道代替编