使用makefile生成a.out并禁用警告消息

时间:2017-03-26 06:33:51

标签: makefile gdb cc

以下是两个不同的问题。

首先,是否可以修改makefile以便生成可由GDB读取的a.out?其次,在makefile中,如何禁用屏幕输出上的所有警告消息?

以下是makefile的内容:

ALL: timefield eqloc3d getdat

timefield: timefield.c common.c common.h getpar.c time_3d.c modresample.c eq.c eq.h
    cc timefield.c common.c getpar.c time_3d.c modresample.c eq.c ./libgeo.a -lsunmath -lm -g -o timefield

eqloc3d: deri.c eqloc3d.c getpar.c main.c  modresample.c common.h common.c modifyxy.c modifyxyz.c eqloc3d.h eq.c eq.h model.h initeqloc.h initeqloc.c
    cc deri.c eqloc3d.c getpar.c main.c modresample.c common.c modifyxy.c modifyxyz.c eq.c initeqloc.c ./libgeo.a -lsunmath -lm -xlic_lib=sunperf -g -o eqloc3d

getdat: eq.c eq.h getdat.c
    cc -g eq.c getdat.c -o getdat libgeo.a -lm

如果我运行makefile,它会创建三个二进制可执行文件:timefield,eqloc3d,getdat。一旦程序没有产生正确的输出,我没有a.out,所以我可以使用GDB来跟踪异常。

1 个答案:

答案 0 :(得分:0)

为什么你需要a.out ??

基于你的makefile,你的makefile生成3个可执行文件。他们正在生成......

第一个问题:

是肯定的。你必须添加&#34; -g&#34;,才能生成可执行的debug-gable。 在makefile中,您发布了所有三个可执行文件 getdat timefield eqloc3d 已经使用&#34; -g&#34;。< / p>

因此可执行文件已准备好进行调试。只需要打电话,如下所示。

$ gdb getdat 

$ gdb timefield

$ gdb eqloc3d

然后设置断点并使用适当的参数调用run(如果有的话)。

第二个问题:

使用-w来禁止所有警告消息。

例如:

cc -w -g eq.c getdat.c -o getdat libgeo.a -lm