[英]Compiling Small Gcc Project on Windows Using MinGW
所以我已經用C ++編程了將近2年,而且我有幸使用IDE(VS)和可愛的項目設置以及自動鏈接等。 我總是遠離任何需要我通過makefile編譯的外部庫,或者至少是那些用於linux環境/其他編譯器的庫。
無論如何我現在想要使用一個超級方便的實用程序( Bob Jenkins Perfect Minimal Hash)但它需要我通過makefile編譯,不僅如此,而是使用g ++編譯器。
我繼續前進並獲得了mingW32-make實用程序,現在正試圖讓它工作。 我現在在哪里:
我得到的錯誤是:
C:\\ gen_progs \\ pH值>的mingw32-MAKE
mingw32-make:***沒有規則來制作目標
lookupa.c', needed by
lookupa.olookupa.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.