我正在尝试从为MinGW编写的backtrace项目https://code.google.com/p/backtrace-mingw/编译代码,但是使用MinGW-w64 .
我的旧安装和MinGW-W64的全新安装产生了同样的问题 . Path在路径变量中设置,也在命令提示符中设置:
C:\ MinGW的-W64 \ i686-4.9.2-Win32的sjlj-rt_v3-REV1 \ mingw32的\ BIN
和C:\ mingw-w64 \ i686-4.9.2-win32-sjlj-rt_v3-rev1 \ mingw32虽然不需要这个 .
这是该项目的makefile:
.PHONY: all clean
all : backtrace.dll test.exe
backtrace.dll : backtrace.c
gcc -O2 -shared -Wall -o $@ $^ -lbfd -lintl -liberty -limagehlp
test.exe : test.c
gcc -g -Wall -o $@ $^
clean :
-del -f backtrace.dll test.exe
编译时我收到警告:
backtrace.c:23:17:致命错误:bfd.h:没有这样的文件或目录#include <bfd.h>`
这很奇怪,因为该文件存在于../mingw32/include文件夹中 .
如果我在compilind dll时添加它:-IC:\ mingw-w64 \ i686-4.9.2-win32-sjlj-rt_v3-rev1 \ mingw32 \ include它会继续但在指令处停止:#error config.h必须包含在内在此 Headers 之前,MinGW-w64中缺少config.h
有任何想法吗?
2 回答
ming中的路径明确地缺少ming包含路径 . 我不知道为什么 . 你必须以自己喜欢的方式自己添加:cmake recipe,autoconf recipe,CFLAGS,CPATH,gcc specs .
并且,据我记得,它仅使用来自
config.h
的HAVE_STRINGIZE
宏,它仅用于定义CONCAT4
宏,而bfd.h
中没有使用它 . 因此,欺骗一点并放置是安全的#define PACKAGE package
之前包括
bfd.h
将其添加到compile语句的末尾:
所以整个编译语句将是:
所以编译器知道在哪里找到包含文件