学院首页>操作系统>Linux>Linux世界驰骋五——Linux常用实用工具

Linux世界驰骋五——Linux常用实用工具

作者: 来源: 添加时间:2006-5-26 14:13:40
如果从程序员的角度看,只需要简单地执行一条GCC命令就可以了,但从编译器的角度来看,它需要完成一系列非常繁杂的工作。首先,GCC需要调用预处理程序cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用ccl和as,将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。

GCC提供多种指定编译器处理方式的编译选项:

-o 为将产生的可执行文件指定一个文件名来代替缺省的a.out。

-c 选项告诉GCC仅把源代码编译为目标代码,跳过汇编和连接的步骤。

-S 要求编译程序生成来自源代码的汇编程序输出。

-E 不经过编译预处理程序的输出,输送至标准输出。当这个选项被使用时, 预处理器的输出被送到标准输出,而不是储存在文件里。

2.警告提示功能

GCC包含完整的出错检查和警告提示功能,可以帮助Linux程序员写出更加专业和优美的代码。出错检查和警告提示如下:

-pedantic 能够帮助程序员发现一些不符合ANSI/ISO C标准的代码,但不是全部。只有ANSI/ISO C语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现,并提出警告。-Wall 使GCC产生尽可能多的警告信息。

-w 禁止所有的报警。

-Werror 要求GCC将所有的警告当成错误进行处理,这在使用自动编译工具(如Make等)时非常有用。如果编译时带上-Werror选项,那么GCC会在所有产生警告的地方停止编译,迫使程序员对自己的代码进行修改。只有当相应的警告信息消除时,才可能将编译过程继续朝前推进。

3.库依赖

在Linux下开发软件时,完全不使用第三方函数库的情况是比较少见的。从程序员的角度看,函数库实际上就是一些头文件(.h)和库文件(.so或.a)的集合。虽然Linux下的大多数函数都默认将头文件放到/usr/include/目录下,将库文件放到/usr/lib/目录下,但并不是所有的情况都如此。正因为这样,GCC在编译时必须有办法来查找所需要的头文件和库文件。

GCC采用搜索目录的办法来查找所需要的文件,-I选项可以向GCC的头文件搜索路径中添加新的目录。例如,如果在/home/test/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项:

# gcc foo.c -I /home/test/include -o foo


同样,如果使用了不在标准位置的库文件,那么可以通过-L选项向GCC的库文件搜索路径中添加新的目录。



第 2 页,共 2 页 [1] [2]
站内搜索