Linux中最重要的C/C++编译工具 是GNU的GCC。实际上GCC能够编译三种语言:C,C++,Object C(C语言的一种面向对象扩展)。利用GCC命令可以同时编译并连接C和C++的源程序。
如果只有少数几个C源文件,可以方便的用GCC命令进行编译,连接并生成可执行文件。如果是一个工程,涉及很多文件,最好是做一个Makefile文件进行整体编译和连接。
对于C++语言,GCC命令只能编译C++源文件,而不能自动和C++程序使用的库文件进行连接,因此,通常用G++命令来完成C++程序的编译和连接,该命令会自动调用GCC实现编译。
GCC命令的主要选项:
-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,例如 asm 或 typeof 关键词。
-c 只编译并生成目标文件。
-DMACRO 以字符串“1”定义 MACRO 宏。
-DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。
-E 只运行 C 预编译器。
-g 生成调试信息。GNU 调试器可利用该信息。
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY 连接时搜索指定的函数库LIBRARY。
-m486 针对 486 进行代码优化。
-o FILE 生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化。
-O3 比 -O2 更进一步优化,包括 inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止使用共享连接。
-UMACRO 取消对 MACRO 宏的定义。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。