首页 > 解决方案 > g ++编译时无法识别的调试输出级别'db'错误

问题描述

我正在尝试使用一些开源程序,我输入了“make data”来创建“data”文件,但它创建了以下错误响应

<stdin>:3:6: warning: ISO C++ forbids declaration of ‘main’ with no type [-Wreturn-type]  
mpicxx -o data data.o -l/home/songyi719/Desktop/Research/petsc-3.1-p6/installation_folder/include -l/usr/include -l/home/songyi719/Desktop/Research/petsc-3.1-p6/installation_folder/include -g -gdb -MMD -MP -L//lib -L/home/songyi719/Desktop/Research/petsc-3.1-p6/installation_folder/lib -L/usr/lib64 -L/home/songyi719/Desktop/Research/petsc-3.1-p6/installation_folder/lib -L./ -lpthread -lrt -lstdc++ -lX11 -lpetsc -lHYPRE -lblas -llapack -lgfortran -g -ldl  
g++: error: unrecognized debug output level ‘db’  
make: *** [makefile:128: data] Error 1

'makefile'中关于数据的相应部分是

data: tests tecplottest data.o  
$(LIBFLAG) $(LIBTECPLOT)
    $(MPICXX) -o data data.o -l$(PETSCINC) -l$(TECINC) -l$(HYPREINC) -g -gdb -MMD -MP $(LIBDIR) $(LIBFLAG) $(LIBTECPLOT)

我猜这个错误可能是因为g ++编译器以错误的方式识别'gdb',但我不知道为什么以及如何解决这个问题

谢谢

标签: makefilegdbg++

解决方案


-gdb不是有效的 GCC 参数,而这正是错误告诉您的内容。

改为使用-ggdb

更新:

/usr/bin/ld: cannot find -l/home/songyi719/Desktop/Research/petsc-3.1-p6/installation_folder/include

你自己写的Makefile吗?

这是错误的:... -l$(PETSCINC) -l$(TECINC) -l$(HYPREINC) ...

所有这些-ls 应该是-Is :... -I$(PETSCINC) -I$(TECINC) -I$(HYPREINC) ...

更新2:

实际上,由于这是一个链接命令并且这里没有编译源,所有这些:-I$(PETSCINC) -I$(TECINC) -I$(HYPREINC)应该被删除(仅来自链接命令)。


推荐阅读