本章其余部分讨论了 CC 命令使用的约定、编译器源代码行指令和其他有关编译器的使用问题。
CC [options] [source-files] [object-files] [libraries] |
选项是前缀为短划线 (–) 或加号 (+) 的选项关键字。某些选项带有参数。
通常,编译器选项的处理顺序是从左到右,从而允许有选择地覆盖宏选项(包含其他选项的选项)。在大多数的情况下,如果您多次指定同一个选项,那么最右边的赋值会覆盖前面的赋值,而不会累积。注意以下特殊情况:
所有链接程序选项和 -features、–I -l、– L、-library、–pti、–R、-staticlib、-U、-verbose、-xdumpmacros 和 -xprefetch 选项都会累积,但它们不会覆盖。
所有 –U 选项都在所有 –D 选项之后处理。
源文件、目标文件和库按它们在命令行上出现的顺序编译并链接。
在以下示例中,在启用了运行时调试的情况下,使用 CC 编译两个源文件(growth.C 和 fft.C)来生成名为 growth 的可执行文件:
example% CC -g -o growth growth.C fft.C |
命令行上附加在文件名后面的后缀确定了编译器处理文件的方式。如果文件名称的后缀没有在下表中列出,或文件名称没有后缀,那么都要传递到链接程序。
表 2–1 C++ 编译器识别的文件名称后缀
后缀 |
语言 |
操作 |
---|---|---|
C++ |
以 C++ 源文件编译,将目标文件放在当前目录中;目标文件的缺省名称是源文件名称加上 .o 后缀。 |
|
C++ |
操作与 .c 后缀相同。 |
|
C++ |
操作与 .c 后缀相同。 |
|
C++ |
操作与 .c 后缀相同。 |
|
C++ |
操作与 .c 后缀相同。 |
|
C++ |
操作与 .c 后缀相同。 |
|
C++ |
将预处理程序输出文件作为 C++ 源文件处理。操作与 .c 后缀相同。 |
|
汇编程序 |
使用汇编程序的汇编源文件。 |
|
汇编程序 |
使用 C 语言预处理程序和汇编程序的汇编源文件。 |
|
内联扩展 |
处理内联扩展的汇编内联模板文件。编译器将使用模板来扩展选定例程的内联调用。(内联模板文件是特殊的汇编文件。请参见 inline(1) 手册页。 |
|
目标文件 |
将目标文件传递到链接程序。 |
|
静态(归档)库 |
将目标库名传递到链接程序。 |
|
动态(共享)库 |
将共享对象的名称传递到链接程序。 |
C++ 编译器在命令行上接受多个源文件。编译器编译的单个源文件和其直接或间接支持的任何文件一起统称为编译单元。C++ 将每个源作为一个单独的编译单元处理。