【问题标题】:Error compiling C code using MinGW-w64 in Windows 7在 Windows 7 中使用 MinGW-w64 编译 C 代码时出错
【发布时间】:2015-04-25 02:47:42
【问题描述】:

我正在尝试从为 MinGW 编写但使用 MinGW-w64 的回溯项目 https://code.google.com/p/backtrace-mingw/ 编译代码。

我的 MinGW-w64 旧安装和全新安装产生了同样的问题。路径在路径变量中设置,也在命令提示符中设置:

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 `

这很奇怪,因为该文件存在于 ../mingw32/include 文件夹中。

如果我在编译 dll 时添加这个:-IC:\mingw-w64\i686-4.9.2-win32-sjlj-rt_v3-rev1\mingw32\include 它会继续,但会停在指令:#error config.h 必须包含在此标头之前,并且 MinGW-w64 中缺少 config.h

有什么想法吗?

【问题讨论】:

    标签: c makefile mingw mingw-w64


    【解决方案1】:

    在 mingw 中的 gcc 包含路径中肯定缺少该路径。我不知道为什么。你必须以任何你喜欢的方式自己添加它:cmake recipe、autoconf recipe、CFLAGS、CPATH、gcc specs。

    而且,据我所知,它仅使用来自config.h 的HAVE_STRINGIZE 宏,并且仅用于定义CONCAT4 宏,而bfd.h 中的任何地方都没有使用。所以,稍微作弊并放上去是安全的

    #define PACKAGE package

    在包含bfd.h之前

    【讨论】:

      【解决方案2】:

      将此添加到编译语句的末尾:

      -I./mingw32/include
      

      所以整个编译语句是:

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

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

      【讨论】:

      • 这没有帮助。问题在于 dll,我已经尝试过了,请参阅问题。
      猜你喜欢
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 2011-03-17
      • 2018-01-03
      • 1970-01-01
      相关资源
      最近更新 更多