2017-02-18 24 views
0

gcc-makeコマンドでC++プロジェクトをコンパイルしようとしていますが、このエラーを出すプログラムです。私はすでにCrypto ++をコンパイルし、includeとlibフォルダを追加しましたが、gccにこのディレクトリを追加する方法はわかりません。メイクファイルのGCCとCrypto ++

この "-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 

暗号++ディレクトリ:

enter image description here

コンパイルエラー:

enter image description here

+1

質問にエラーを含めてください – user463035818

+0

私は間違った画像をお送りしています。 –

+1

メイクファイルのエラーと[mcve]を追加し、**のテキスト**として質問に追加してください。 –

答えて

1

リンクラインにライブラリを含むディレクトリを追加していません。暗号++ビルドから作業する場合

$(TARGET): build $(OBJECTS) 
     $(CC) $(OBJECTS) -o $(TARGET) -Lxxx -lcryptopp 

cryptoppライブラリを含むディレクトリでxxxを置き換える)

+0

$(CC)$(OBJECTS)-o $(TARGET)-LC:\ cryptopp \ include \ cryptopp -lcryptopp'を追加しましたが、-lcrytoppについても同じエラーが表示されます。 –

+0

私は、ライブラリが 'include'という名前のディレクトリにあるのではないかと疑います。リンク行に追加したディレクトリに 'cryptopp.lib'がありますか? – MadScientist

+0

はい先生は、私がcrypto.libするリネームcrytlib.libでこのprobleamを修正するが、今回は 'のsrc/mix_file.o与える:機能で' ZN8CryptoPP31IteratedHashWithStaticTransformIjNS_10EnumToTypeINS_9ByteOrderELi1EEELj64ELj20ENS_4SHA1ELj0ELb0EE24HashEndianCorrectedBlockEPKj ': C:/mingw/lib/gcc/mingw32/5.3.0/インクルード/ cryptopp/iterhash.h:170:CryptoPP :: SHA1 :: Transform(unsigned int *、unsigned int const *)への未定義の参照 collect2.exe:エラー:ldが1の終了ステータスを返しました メイクファイル:34:レシピターゲット 'build/ccmix'が失敗しました make:*** [build/ccmix]エラー1' –

0

What should I do for fixing this "-lcrytopp" error?

:それはxxxcryptoppライブラリを含むディレクトリへのパスです-LxxxのようなものでなければなりませんディレクトリにUnix互換の場合、プロジェクトはincludelib(あなたの写真が示すように)を使用しません。すべてがルートディレクトリに置かれます(あなたの写真が示すように)。

make installを実行すると、ディレクトリがセットアップされますが、インストールされていないように見えます。私はまた、プロジェクトが放棄されているので、MinGWは通常もうテストされないと言わなければならないので、make installがMinGW上で実際にどこにインストールされるのか分かりません。あなたのメイクのレシピを微調整し、コンパイルエラーを修正するには

$(TARGET): build $(OBJECTS) 
    $(CXX) $(CXXFLAGS) -I. $(OBJECTS) ./libcryptopp.a -o $(TARGET) 

上記のレシピは、むしろCC(Cコンパイラ)よりもCXX(C++コンパイラ)を使用しています。 CXXFLAGSを使用します(これは-DNDEBUG -g2 -O2のようになります)。ヘッダパス(-I.)を呼び出します。静的ライブラリ(./libcryptopp.a)にリンクします。静的ライブラリにリンクすることで、次の問題が回避されます。

MadScientistのアドバイスに従って、-LXXX-lcryptoppを使用することができます。あなたは-Wl,-rpath,D:\Osman\CnC RA2\Mix\ccmix-crypto\ccmix-cryptoで走路を追加することさえできます。しかし、今日の終わりには、-L-lを使用するとかなりのトラブルが発生します。今後の問題を回避するには、libcryptopp.aを静的にリンクしてください。

また、Crypto ++ wikiのGNUmakefile | Compiling and Linkingも参照してください。


あなたの拳絵はipchWin32ディレクトリを示しています。これは、通常、Visual StudioでCrypto ++ライブラリを構築したことを意味します。今はGCCを使ってプログラムを構築しています。 は、そのようなミックスマッチコンパイラではありません。それは何も良いことではありません。

関連する問題