makefile - 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',但我不知道为什么以及如何解决这个问题
谢谢
解决方案
这-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
s 应该是-I
s :... -I$(PETSCINC) -I$(TECINC) -I$(HYPREINC) ...
更新2:
实际上,由于这是一个链接命令并且这里没有编译源,所有这些:-I$(PETSCINC) -I$(TECINC) -I$(HYPREINC)
应该被删除(仅来自链接命令)。
推荐阅读
- swiftui - 是否可以使用 GridItem 在 SwiftUI 中忽略 LazyVGrid 中的“空”项?
- flutter - Flutter/Dart:get_cli 为页面添加更多视图
- apache-camel - 未能执行目标 cxf-codegen-plugin:3.2.4:wsdl2java (generate-sources) 项目 OAS: org.apache.cxf.helpers.JavaUtils.isJava9Compatible()Z
- node.js - 如果我有 URL 和端点以及请求和响应,我如何使用 get 方法通过 API 从服务器访问数据
- mysql - 如何在 Laravel 5.8 中输入相同标题时创建独特的 slug
- c# - 为什么这个 WaitLock 卡住了?
- python - 在我的寡妇 7 专业机器上安装 python 时遇到问题
- python - 必须以管理员-python 运行
- node.js - 从 MongoDB 聚合函数接收的数组不可迭代
- python - python中的双重调用