[英]GCC and Crypto++ on makefile
我正在嘗試使用gcc-make命令編譯C ++項目,但是程序給出了此錯誤。 我已經編譯了Crypto ++,並添加了include和lib文件夾,但我不知道如何將此目錄添加到gcc。
解決該“ -lcrytopp”錯誤該怎么辦?
我正在使用makefile,這是33-34行。
$(TARGET): build $(OBJECTS)
$(CC) $(OBJECTS) -o $(TARGET) -lcryptopp
錯誤 :
D:\Osman\CnC RA2\Mix\ccmix-crypto\ccmix-crypto>make
g++ src/mix_db_gamedb.o src/mix_db_gmd.o src/mix_header.o src/mix_db_lmd.o
src/mixid.o src/ccmix.o src/mix_file.o -o build/ccmix -lcryptopp
c:/mingw/bin/../lib/gcc/mingw32/5.3.0/../../../../mingw32
/bin/ld.exe: cannot find -lcryptopp
collect2.exe: error: ld returned 1 exit status
Makefile:34: recipe for target 'build/ccmix' failed
make: *** [build/ccmix] Error 1
加密++目錄:
編譯錯誤:
您尚未將包含庫的目錄添加到鏈接行。 它應該類似於-Lxxx
,其中xxx
是包含cryptopp
庫的目錄的路徑:
$(TARGET): build $(OBJECTS)
$(CC) $(OBJECTS) -o $(TARGET) -Lxxx -lcryptopp
(用包含cryptopp
庫的目錄替換xxx
)
解決該“ -lcrytopp”錯誤該怎么辦?
從Unix兼容版本上的Crypto ++構建目錄工作時,該項目不使用include
和lib
(如您的圖片所示)。 一切都放置在根目錄中(如您的圖片所示)。
如果執行make install
,則會設置目錄,但似乎沒有安裝。 我還要說,由於該項目已被放棄,因此通常不再對MinGW進行測試,因此我不確定make install
實際安裝在MinGW上的哪個位置。
要解決編譯錯誤,請調整制作配方:
$(TARGET): build $(OBJECTS)
$(CXX) $(CXXFLAGS) -I. $(OBJECTS) ./libcryptopp.a -o $(TARGET)
上面的配方使用CXX
(C ++編譯器)而不是CC
(C編譯器)。 它使用CXXFLAGS
(應該類似於-DNDEBUG -g2 -O2
); 它調出頭文件路徑( -I.
); 並鏈接到靜態庫( ./libcryptopp.a
)。 鏈接到靜態庫將避免出現下一組問題。
您可以遵循MadScientist的建議,並使用-LXXX
和-lcryptopp
。 您甚至可以使用-Wl,-rpath -Wl,-rpath,D:\\Osman\\CnC RA2\\Mix\\ccmix-crypto\\ccmix-crypto
。 但是最終,使用-L
和-l
會帶來很多麻煩。 通過靜態鏈接libcryptopp.a
避免將來出現問題。
另請參見GNUmakefile | 在Crypto ++ Wiki上進行編譯和鏈接 。
您的拳頭圖片顯示了ipch
和Win32
目錄。 這通常意味着您使用Visual Studio構建了Crypto ++庫。 現在,您正在使用GCC構建程序。 您不應該這樣混合和匹配編譯器。 沒有好處。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.