web-dev-qa-db-ja.com

C ++:リンカーは-lcryptoを見つけることができませんが、ライブラリはパスにあります

GNU g++を使用してC++アプリケーションをコンパイルしています。プロジェクトはOpenSSLライブラリを利用しています。

バックグラウンド

私のマシン(64ビットCentOSクアッドコア)で、ファイルをコンパイルしてリンクします。

g++ -g -c -L/usr/local/lib/ -L/usr/lib64/ 
    -I/usr/local/include/ -I/usr/local/ssl/include/ 
    -lcrypto mysrc1.cpp mysrc2.cpp mysrc3.cpp

g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out

私のアプリケーションでは、MD5に含まれる関数libcrypto.soを使用しています。ご覧のとおり、g++-Lオプションを使用して検索するディレクトリと、-Iオプションで検索するライブラリを-l<lib-name>に指定しています。もちろん省略できる/usr/local/libのような簡単なパスもありますが、makefileがパラメトリックであるため指定しました。

問題

私の問題は、自分のものを正常にコンパイルできることです(最初のコマンド)しかしリンクは失敗します(2番目のコマンド):

/ usr/bin/ld:-lcryptoが見つかりません

collect2:ldが1つの終了ステータスを返しました

make:*[cppsims_par]エラー1

しかし、私はフォルダとすべてをチェックしました... libcrypto.so/usr/lib64/の中にあります。何が起こっている?

11
Andry

ファイルの検索に失敗した理由をstraceで確認すると役立つ場合があります

strace -f -e trace=file g++ -L/usr/local/lib/ -L/usr/lib64/ -lcrypto 
    *.o -o ./myapp.out
4
tristan

私は問題を見つけました、そしてそれはこの質問に関連しています: ldは既存のライブラリを見つけることができません

実際にはシンボリックリンクがありませんでしたlibcrypto.soそしてコンパイラはライブラリを見つけることができませんでした...

3
Andry