0

行の下に書かれている問題は解決しましたが、関連する新しい問題に直面しています。以前とは少し異なりますが、サンプルの OpenCV コードを次のようにコンパイルしてリンクしています。

g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -lcv -lcxcore -lcvaux -lml -lhighgui

これでエラーは発生しませんが、実行可能ファイルを実行すると

./facedetection

私はこのエラーが発生します:

./facedetection: error while loading shared libraries: libcv.so.2.0: cannot open shared object file: No such file or directory

そして、シンボリックリンクを行うときは、次を使用します。

ln -s libcv.so libcv.so.2.0

次に、エラーは次のとおりです。

ln: failed to create symbolic link 'libcv.so.2.0': File exists

これを回避する方法がわかりません。

前もって感謝します..

IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII

.so ファイルと動的にリンクされ、OpenCV がインストールされていないマシンで実行されるサンプル OpenCV プログラムの Linux 実行可能ファイルを作成しようとしていますが、.so ファイルはその Linux マシンに存在します。

これに関する多くの投稿を検索しましたが、まだ成功していません。

次のようにopencvをコンパイルしました:

cd OpenCV-2.0.0/
cmake -DBUILD_SHARED_LIBS=ON .
make

次に、コンパイルされたすべてのライブラリが OpenCV-2.0.0/lib に作成されました

次に、samples/c ディレクトリで、次のようにしました。

g++ facedetect.cpp -o facedetection -I /home/harsh/Downloads/OpenCV-2.0.0/include/opencv/ -L/home/harsh/Downloads/OpenCV-2.0.0/lib/ -llibcv -llibcxcore -llibcvaux -llibml -llibhighgui

しかし、エラーは次のとおりです。

/usr/bin/ld: cannot find -llibcv
/usr/bin/ld: cannot find -llibcxcore
/usr/bin/ld: cannot find -llibcvaux
/usr/bin/ld: cannot find -llibml
/usr/bin/ld: cannot find -llibhighgui
collect2: ld returned 1 exit status
4

1 に答える 1

4

-lcv-lcxcoreなどを使用します。

にリンクするlibfoo.soには、フラグは-lfooで、その部分はありませんlib

ライブラリがデフォルトのランタイム ライブラリ検索パスにない場合 (これがどのように設定/管理されるかは、OS とディストリビューションによって異なります)、それらがどこにあるかをダイナミック リンカーに通知する必要があります。-L(フラグを追加してコンパイルするときにそうしなければならないのと同じように。)

Linux では、これは環境変数を設定することによって行われますLD_LIBRARY_PATH。たとえば、次のようになります。

export LD_LIBRARY_PATH=/home/harsh/Downloads/OpenCV-2.0.0/lib/:$LD_LIBRARY_PATH
./your_app
于 2012-04-16T21:26:56.930 に答える