qmake を使用して Ubuntu Linux で C++ ソフトウェアを構築する際に問題があります。
問題は、1 つのシステムで異なるバージョンを持つことができる OpenCV などのライブラリを使用することです。
qmake は自動的に -L/usr/lib または -L/usr/lib/x86_64-linux-gnu を g++ 引数に追加し、その後に LIBS 変数の内容を追加します。
そのため、異なるバージョンの OpenCV との競合があり、システム バージョンが使用されますが、ビルド ツリーにあるカスタム バージョンが必要です。この問題を解決するために -L などでライブラリの順序を変更する方法はありますか?
質問する
1589 次
3 に答える
1
これを行うには、次の 2 つのコンポーネントがあります。
まず、それらを .pro ファイルに正しく含める必要があります。次のようなものでこれを行います(これは私の現在のプロジェクトからのものです):
LIBS += L${OPENCV_HOME}/lib \
-lopencv_core \
-lopencv_highgui \
環境変数は、パスが何であれ置き換えることができます。ヘッダーインクルードも必要なため、このような環境変数を使用すると便利であることがわかりました。
INCLUDEPATH += $$(OPENCV_HOME)/include/opencv2 \
$$(OPENCV_HOME)/include/opencv \
$$(OPENCV_HOME)/include
これにより、プロジェクトを作成して正しくビルドできます。
ただし、それらを実行しようとすると、アプリが (あなたが言うようにシステム ライブラリから) 間違ったライブラリを見つけるため、あらゆる種類の問題が発生する可能性があります。LD_LIBRARY_PATH 変数を正しく設定する必要があります。この場合、以下を含む起動スクリプトがあります (ユーザー プロファイルまたは他の場所でこれを行うことができます)。
export LD_LIBRARY_PATH=${OPENCV_HOME}/lib
次に、システム ライブラリの前に、最初に LD_LIBRARY_PATH 上のその場所 (およびその他の場所) を調べます。
于 2013-02-07T20:05:10.563 に答える