簡體   English   中英

使用MinGW在Windows上編譯小型Gcc項目

[英]Compiling Small Gcc Project on Windows Using MinGW

所以我已經用C ++編程了將近2年,而且我有幸使用IDE(VS)和可愛的項目設置以及自動鏈接等。 我總是遠離任何需要我通過makefile編譯的外部庫,或者至少是那些用於linux環境/其他編譯器的庫。

無論如何我現在想要使用一個超級方便的實用程序( Bob Jenkins Perfect Minimal Hash)但它需要我通過makefile編譯,不僅如此,而是使用g ++編譯器。

我繼續前進並獲得了mingW32-make實用程序,現在正試圖讓它工作。 我現在在哪里:

  • 成功安裝了minGW
  • 成功地稱為make實用程序
  • 無法成功完成項目。

我得到的錯誤是:

C:\\ gen_progs \\ pH值>的mingw32-MAK​​E

mingw32-make:***沒有規則來制作目標lookupa.c', needed by lookupa.o lookupa.c', needed by '。 停止。

和makefile本身:

CFLAGS = -O

.cc.o:
    gcc $(CFLAGS) -c $<

O = lookupa.o recycle.o perfhex.o perfect.o

const64 : $(O)
    gcc -o perfect $(O) -lm

# DEPENDENCIES

lookupa.o : lookupa.c standard.h lookupa.h

recycle.o : recycle.c standard.h recycle.h

perfhex.o : perfhex.c standard.h lookupa.h recycle.h perfect.h

perfect.o : perfect.c standard.h lookupa.h recycle.h perfect.h

現在錯誤似乎是合理的,至少從我對makefile的最小理解,我有所有引用的.c,.h文件,但是我沒有.o文件,似乎沒有關於如何制作的任何說明這些。 所以我的問題是:

我調用make實用程序錯了嗎? 或者我是否需要先編譯目標文件? 或者......我需要在make文件中添加一些內容嗎?

我再次提到所有引用的.c和.h文件。

編輯:對不起,我實際上錯過了那個特定的文件似乎已經消失了。 但是,將其添加回來就是我現在得到的錯誤:

c:\gen_progs\ph>mingw32-make 
cc -O   -c -o lookupa.o lookupa.c 
process_begin: CreateProcess(NULL, cc -O -c -o lookupa.o lookupa.c, ...) failed.

make (e=2): The system cannot find the file specified. 
mingw32-make: *** [lookupa.o] Error 2

關於你的錯誤“process_begin:CreateProcess(NULL,cc -O -c -o lookupa.o lookupa.c,...)失敗。”

這是因為make實用程序想要使用“cc”編譯器來編譯程序,但該編譯器不是Mingw-package的一部分。

解決方案:將“.cc.o:”更改為“.co:”。 這改變了隱式規則,該規則在編譯.c文件時告訴使用什么編譯器(下一行是gcc)(原始行告訴它如何編譯.cc文件)。

make -DCC=gcc在命令行中使用make -DCC=gcc或將行CC=gcc添加到Makefile的頂部也可以解決問題。 Make內置處理C源代碼的規則,所有C編譯器都使用變量CC命名,默認為“cc”,即使在Gnu Make中也是向后兼容的原因。

看起來原始的Makefile作者試圖通過提供編譯.cc文件的自定義規則來解決該問題,但由於項目中沒有.cc文件,因此實際上沒有使用規則。

CC指定正確的值優於將顯式規則修復為名稱.c文件恕我直言,因為Makefile通常更易於使用和維護,並且在指定最少可能的信息時是最便攜的。

我不認為沒有.o文件是問題。 Make將從源文件(冒號右側的文件)中創建它們。

您的直接問題似乎是make無法將文件存檔為“lookupa.c”。 根據您發布的規則,我認為該文件應該與makefile位於同一目錄中,但事實並非如此。 您需要確定該文件的位置以及如何將其存儲在那里。

(出於某種原因,我有一個Wile E. Coyote坐在他的電腦前的心理形象,看到了文件名,抬頭,並用鐵砧貼上了)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM