2015-02-23 129 views
2

我正在嘗試從MinGW編寫的backtrace項目https://code.google.com/p/backtrace-mingw/中編譯代碼,但使用MinGW-w64。在Windows 7中使用MinGW-w64編譯C代碼時出錯

我的舊安裝和MinGW-w64的全新安裝產生同樣的問題。路徑被設置在路徑變量,以及在命令提示:

C:\的mingw-W64 \ i686-4.9.2-Win32的sjlj-rt_v3-REV1 \的mingw32 \ BIN

Ç :\ mingw-w64 \ i686-4.9.2-win32-sjlj-rt_v3-rev1 \ mingw32雖然這不是必需的。

這是該項目的生成文件:

.PHONY: all clean 

all : backtrace.dll test.exe 

backtrace.dll : backtrace.c 
    gcc -O2 -shared -Wall -o [email protected] $^ -lbfd -lintl -liberty -limagehlp 

test.exe : test.c 
    gcc -g -Wall -o [email protected] $^ 

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的\包括繼續,但在指令停止:#錯誤config.h必須包含在此標頭和config.h在MinGW-w64中丟失

任何想法?

回答

-1

內容添加到編譯語句的末尾:

-I./mingw32/include 

因此整個編譯的語句應該是:

gcc -g -Wall -o [email protected] $^ -I./mingw32/include 

所以編譯器知道在哪裏可以找到包括文件

+0

沒有幫助之前把

#define PACKAGE package

。問題是DLL,我已經試過了,看到這個問題。 – reader 2015-02-23 17:54:37

0

該路徑在mingw中由gcc include路徑定義缺失。我不知道爲什麼。您必須以任何您喜歡的方式自行添加:cmake recipe,autoconf recipe,CFLAGSCPATHgcc specs

而且,據我記得,它僅使用HAVE_STRINGIZE宏從config.h,它只是用來定義CONCAT4宏,這不是在bfd.h任何地方使用。所以,它的安全騙一點,包括bfd.h