私は数日前にUbuntuをインストールし、apt-getを使ってbuild_essentials、opencv、highguiなどをインストールしました。g ++は4.6.1、opencvは2.1.0に見えます。ソースからopencvをビルドしてください。Ububtu、opencv、and link
私たちはopencv機能を使用するいくつかのソフトウェアを持っています。ソースファイルの名前がa.cppとb.cppのふりをしましょう。私はa.oとb.oにコンパイルし、それらを.soライブラリ(libab.soと呼ぶ)に入れます。
最後に、メインにz.cppという名前のファイルがあります。私はそこから実行可能ファイルを構築しようとしますが、cv :: stuffに大量の "未定義の参照"エラーが発生します。その後、私は(CV ::のものにそれらのすべてが)未定義の参照エラーが発生します
g++ -fPIC -g z.cpp -L../lib -lab -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
:マイリンク行は次のようになります。
興味深いのは、私の.oファイルと直接リンクしている場合です。これはうまく機能します。これは:
g++ -fPIC -g z.cpp a.o b.o -lml -lcvaux -lhighgui -lcv -lcxcore -o z.out
作品です。
私が読んだことはすべてこれがリンク行の問題である可能性が高いと言えますが、すべての順列の並べ替えを試みて同じ問題を抱えているので、実際には自分の問題は考えませんでしたまだ間違っている。誰でもライブラリの構築方法を知ることができます。なぜなら、ライブラリに正常に含まれている完全な.oファイルを使ってビルドした場合、ライブラリ自体でビルドできないのはなぜですか?
オクラホマので、このISN:このファイルは、コンパイルのための情報をすべて格納している
/usr/local/lib/pkgconfig/opencv.pc
私はopencv 2.3.1をソースからインストールすることになりました.ffmpeg(特にv0.8!)もインストールしなければなりませんでした。だから、それは明らかにapt-getで得たopencvビルドと関係がありました。私はこれを試していないが、ソースから2.1をインストールできたと思う。まだライブラリとコンパイルする理由はよくわかりません。oは問題になるでしょうが、状況は今働いています。だから.... – daroo