簡體   English   中英

Makefile上的GCC和Crypto ++

[英]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 ++構建目錄工作時,該項目不使用includelib (如您的圖片所示)。 一切都放置在根目錄中(如您的圖片所示)。

如果執行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上進行編譯和鏈接


您的拳頭圖片顯示了ipchWin32目錄。 這通常意味着您使用Visual Studio構建了Crypto ++庫。 現在,您正在使用GCC構建程序。 不應該這樣混合和匹配編譯器。 沒有好處。

暫無
暫無

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

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