编译时出现 g++ 无法识别的调试输出级别 'db' 错误

g++ unrecognized debug output level 'db' error while compiling

我正在尝试使用一些开源程序,我输入了 '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'的方式不对,但我不知道为什么以及如何解决这个问题

谢谢

-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) ...

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

更新2:

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