2012-03-06 20 views
2

私のQtプロジェクトでOpenCVライブラリ(debian squeezeパッケージ)とリンクしたいと思います。プロジェクトは、Qtライブラリを使用しない単純なC++プロジェクトです。Qtビルドシステム(qmake)を使用するだけです。 MakeFileを生成する。QtプロジェクトでOpenCVと静的にリンクする方法

.soオブジェクトと.aオブジェクトが/usr/libにあるので、パッケージのOpenCVライブラリが静的にも動的にもコンパイルされていると思います。 Qtプロジェクトファイルのリンケージオプションを探して、ビルドシステムに静的ライブラリを探すよう指示します。私もLIBS+= -static -lcv ,...を追加しようとしましたが、うまくいきませんでした。

答えて

3

私はOpenCVのとQTを使用したプロジェクトを展開しようとしている問題の多くを持っていました。静的リンクは恐らく私が理解するのに十分な賢さではない恐ろしいウサギの穴であったが、私はより良い選択肢と思ったものを考え出した。興味があればそれをチェックしてください。

多くの独立したライブラリを使用するプロジェクトを静的にコンパイルするのは、非常に難しいことがあります。あなたがGPLされていなければ他のライブラリをあなたのバイナリにビルドするのに奇妙な法的問題があるかもしれません。代わりにバイナリとその依存関係をきちんとまとめるための簡単な方法を見つけました。

普通に正常にリリースされたかのように通常のリリースバイナリを構築してください 次に、このリリースディレクトリに移動してこのコマンドを実行してください。バイナリに必要なすべての依存関係をあなたの選択したフォルダにコピーします! NAMEOFYOURRELEASEため

cp `ldd NAMEOFYOURRELEASE | sed -re s/^.+\=\>// | sed -re 's/^(.+) \(.+\)/\1/'` FOLDERNAMETOPUTLIBRARIES/ 

は、

を作成しexecuteableバイナリファイルの名前を入れて、FOLDERNAMETOPUTLIBRARIESのために今、私たちが必要とするあなたが 3にすべての依存関係をコピーしたいでしょうフォルダの名前を入れて実行ファイルに奇妙な新しいコンピュータ上の依存関係を探す場所を教えてください。 今、あなたはあなたが好きな場所、このバイナリおよび依存関係のそのフォルダを移動することができるはずです、あなたのプロジェクトのためのあなたの.PROファイルに移動し、次の2行

QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/FOLDERNAMETOPUTLIBRARIES 
QMAKE_LFLAGS_RPATH= 

を追加!

+1

古い質問への新しい回答!今では、ARMアーキテクチャとは別のボードを使用しています。私はOpenCVを再コンパイルする必要があります。私はそれを試みるつもりです。ありがとう –

+0

ああクール!それはまだ潜在的な使用の可能性があるうれしい! – blorgggg

1

これを試してみてください:

LIBS += -Wl,-Bstatic -lcv -Wl,-Bdynamic 

出典:http://ubuntuforums.org/showthread.php?t=852552

+0

多くの未定義のエラー:http://stackoverflow.com/questions/9581363/static-link-to-opencv-a-lot-of-undefined-reference-errors –

関連する問題