0

Debian 7.0.0 で LAMP を使用して apache 2 を使用しています。CodeBlocks 10.05 を使用して、openCV-2.4.0 を含む C++ アプリケーションをビルドします。最初に実行可能ファイルを実行したときに、次のメッセージが表示されました

error while loading shared libraries: cv2.so: cannot open shared object file: No such file or directory

cv2.so を /usr/local/lib にコピーして、この問題を修正しました。

LD_LIBRARY_PATH=/usr/local/lib ; export LD_LIBRARY_PATH

ホームディレクトリの.bashrcファイルに移動して実行中

. .bashrc

私のホームディレクトリにあります。ただし、LAMP アプリケーションはユーザーとして www-data を使用して実行されるため、驚くことではありませんが、php exec() を使用して Web 上でアプリケーションを実行すると、再びエラー メッセージが表示されます。

error while loading shared libraries: cv2.so: cannot open shared object file: No such file or directory

www-data 用の .bashrc ファイルを含むホーム ディレクトリがないため、この問題を解決する方法は明確ではありません。

4

1 に答える 1

0

この行を/etc/profileシステム全体の別の場所に配置してみてください ( /etc/bashrcApache はおそらく BASH によって実行されていないため、おそらく機能しません)。この変更を反映するには、Apache やコンピューターを再起動する必要がある場合があります。

ただし、LD_LIBRARY_PATH最も誤用されている環境変数の 1 つであり、この実行可能ファイルを実行するためにそれが必要であるという事実は、おそらくより大きな問題の兆候です。実行可能ファイルが適切にリンクされていないか、OpenCV が適切にインストールされていないか、またはシステムが正しく構成されていません。

に OpenCV がインストールされていることを考えると/usr/local、自分でコンパイルしてインストールしたと仮定します。Debian リポジトリにパッケージ化されたバージョンが不十分または古すぎると信じる理由はありますか? そうでない場合は、コピーをアン/usr/localインストールしてパッケージをインストールすることをお勧めしますlibcv-dev( sudo apt-get install libcv-dev.) 次に、実行可能ファイルを再コンパイルして、LD_LIBRARY_PATHハッキングなしで動作するかどうかを確認します。また、OpenCV に依存するコンパイル済みのもの (存在する場合) を再コンパイルして再インストールする必要があります。

于 2013-06-01T22:06:27.297 に答える