首页 文章

在Windows 7中使用MinGW-w64编译C代码时出错

提问于
浏览
2

我正在尝试从为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 回答

  • 0

    ming中的路径明确地缺少ming包含路径 . 我不知道为什么 . 你必须以自己喜欢的方式自己添加:cmake recipe,autoconf recipe,CFLAGSCPATHgcc specs .

    并且,据我记得,它仅使用来自 config.hHAVE_STRINGIZE 宏,它仅用于定义 CONCAT4 宏,而 bfd.h 中没有使用它 . 因此,欺骗一点并放置是安全的

    #define PACKAGE package

    之前包括 bfd.h

  • -1

    将其添加到compile语句的末尾:

    -I./mingw32/include
    

    所以整个编译语句将是:

    gcc -g -Wall -o $@ $^ -I./mingw32/include
    

    所以编译器知道在哪里找到包含文件

相关问题