|
发表于 2003-12-19 01:12:44
|
显示全部楼层
Re: linux编程的FAQ:
[quote:5e05b80771="xiaojun"][quote:5e05b80771="tuboshu"] (一)编程语言类:
C/C++
... ...
Q:GCC中-c,-S,-E有什么区别和联系?
A:GCC对C的编译过程共分四步,它们按顺序分别是预处理,编译,汇编和链 接。
-c 选项告诉 GCC 仅把源代码编译为目标代码而跳过汇编和连接的步骤。
这个选项使用的非常频繁因为它使得编译多个 C 程序时速度更快并且更易于管理。
缺省时GCC 建立的目标代码文件有一个 .o 的扩展名。-S 编译选项告诉
GCC 在为 C 代码产生了汇编语言文件后停止编译。 GCC 产生的汇编语言 文件的缺省扩展名是 .s 。
-E 选项指示编译器仅对输入文件进行预处理。
... ...
[/quote]
不知道楼主是否把 -c 和 -S 弄反了:
-c 和 -S 都不进行链接,这一点是正确的
不过 -c 是生成汇编代码的, 而 -S 不生成汇编代码.[/quote]
你们都错了, -c 的意思是不连接
-S 是编译成汇编代码后就停止(当然就没连接了)
man gcc 就可以看到 -c 和 -S 的解释:
-c option says not to run the linker
-S Stop after the stage of compilation proper; do not assemble. The output is in the form of
an assembler code file for each non-assembler input file specified. |
|