|
GCC(GNU C Compiler or GNU Complier Collection)是GNU项目的编译器套件。它能够编译C、C++和Objective C语言编写的程序。GCC能够支持多种不同的C语言变体,比如ANSI C和传统(Kernighan和Ritchie,K&R)C。此外,GCC在g77的帮助下也能够编译Fortran程序,而用于支持Pascal,Modula 3,Ada 9X以及其他语言的编译器前端也在开发中。 使用GCC,程序员能够对编译过程有更多的控制。编译过程分为4个阶段:预处理,适当编译,汇编,连接。而程序员可以在编译的任何阶段结束后停止整个编译过程以检查或使用编译器在该阶段的输出信息。 1 GCC对文件扩展名的解释及对应处理方法 .c C语言源代码; 预处理、编译、汇编 .C/.cc/.cxx C++语言源代码; 预处理、编译、汇编 .m Objective C语言源代码; 预处理、编译、汇编 .i 预处理后的C语言源代码; 编译、汇编 .ii 预处理后的C++语言源代码; 编译、汇编 .s/.S 汇编语言源代码; 汇编 .h 预处理文件(标头文件); (不常出现在指令行) 其他扩展名的文件是由连结程序来处理,通常有: .o 编译后的目标代码(Object file) .a/.so 编译后的库代码(Archive file) 2 常用命令行选项 GCC可以接受的命令行选项长达数页,下列只列出了最常用的部分。 选项 说明 -o FILE 指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,默认文件名是a.out -c 只编译不连接 -D FOO=BAR 在命令行定义预处理宏FOO,其值为BAR -I DIRNAME 将DIRNAME加入到包含文件的搜索目录列表中 -L DIRNAME 将DIRNAME加入到库文件的搜索目录列表中 -static 链接静态库,即执行静态链接默认情况下GCC只链接共享库 -l FOO 链接名为libFOO的函数库 -g 在可执行程序中包含标准调试信息 -ggdb 在可执行程序中包含只有GNU debugger(gdb)才能识别的大量调试信息 -O 优化编译过的代码 -ON 指定代码优化的级别为N,0N3,默认N=1 -ansi 支持ANSI/ISO C的标准语法,取消GNU的语法扩展中与该标准有冲突部分(但这一选项并不能保证生成ANSI兼容的代码) -pedantic 允许发出ANSI/ISO C标准所列出的所有警告 -pedantic-errors 允许发出ANSI/ISO C标准所列出的所有错误 -traditional 支持K&R C 语法 -w 关闭所有警告,建议不要使用此项 -Wall 允许发出GCC能提供的所有有用的警告 -Werror 把所有警告转换为错误,以在警告发生时终止编译 -MM 输出一个make兼容的相关列表 -v 显示在编译过程的每一步中用到的命令 参考文献:[美]Kurt Wall等著 张辉 译.《GNU/Linux编程指南》第二版 26-45. 更多信息请参考http://gcc.gnu.org/onlinedocs/
|
一共有 0 条评论