background image

它会为目标程序生成默认的文件名 a.out,我们可用-o 编译选项来为将产生的可执行文
件指定一个文件名来代替 a.out。例如,将上述名为

helloworld.c 的 C 程序编译为名叫 helloworld 的可执行文件,需要输入如下命令:

gcc –o helloworld helloworld.c

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

-S 编译选项告诉 GCC 

 

在为 C 代码产生了汇编语言文件后停止编译。GCC 产生的汇编语

言文件的缺省扩展名是.s,上述程序运行如下命令:

gcc –S helloworld.c 

将生成 helloworld.c 的汇编代码,使用的是 AT&T 汇编。用 emacs 打开汇编代码如下图:

 

-E 选项指示编译器仅对输入文件进行预处理。当这个选项被使用时,预处理器的输出被
送到标准输出(默认为屏幕)而不是储存在文件里。

-O 选项告诉 GCC 对源代码进行基本优化从而使得程序执行地更快;而-O2 选项告诉
GCC 产生尽可能小和尽可能快的代码。使用-O2 选项编译的速度

比使用-O 时慢,但产生的代码执行速度会更快。

-g 选项告诉 GCC 产生能被 GNU 调试器使用的调试信息以便调试你的程序,可喜的是,
在 GCC 里,我们能联用-g 和-O (产生优化代码)。

-pg 选项告诉 GCC 在你的程序里加入额外的代码,执行时,产生 gprof 用的剖析信息以
显示你的程序的耗时情况。

3.GDB 调试器

       GCC 用于编译程序,而 Linux 的另一个 GNU 工具 gdb 则用于调试程序。gdb 是一
个用来调试 C 和 C++程序的强力调试器,我们能通过它进行一

系列调试工作,包括设置断点、观查变量、单步等。

其最常用的命令如下:

file

 

:装入想要调试的可执行文件。

kill

 

:终止正在调试的程序。