Armadilloフォーラム

Qtで作成したOpen cvの画像処理プログラムをArmadillo上で実行する方法

rookie

2014年3月5日 16時49分

お世話になります。

Qtで作成したOpen cvの画像処理プログラムをArmadillo上で実行しようと試みているのですが、
Armadillo用にビルドするとOpen cvのライブラリがないとエラーが出力されます。
開発用のマシンではビルドして動作確認できております。
Armadillo上で実行できるようにするには、どうしたらよろしいでしょうか?

以下、エラーコードになります。

/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib//libopencv_core.so when searching for -lopencv_core
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib//libopencv_core.a when searching for -lopencv_core
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib//libopencv_highgui.so when searching for -lopencv_highgui
/usr/lib/gcc/arm-linux-gnueabihf/4.6/../../../../arm-linux-gnueabihf/bin/ld: skipping incompatible /usr/lib//libopencv_highgui.a when searching for -lopencv_highgui
16:42:23: プロセス "/usr/bin/make" は正常に終了しました。
16:42:23: 起動中: "/usr/bin/qmake" /home/atmark/hoge/hoge.pro -r -spec linux-arm-gnueabihf-g++
16:42:24: プロセス "/usr/bin/qmake" は正常に終了しました。
16:42:24: Elapsed time: 00:17.

以下は実行時のエラーになります。

/tmp/hoge: error while loading shared libraries: libopencv_core.so.2.3: cannot open shared object file: No such file or directory
リモートアプリケーションは終了コード 127 で終了しました。

コメント

勘なのですが、x86のライブラリをサーチするように記載していませんか?
arm用のコンパイラーが x86 (または x86_64)のライブラリを見付けてしまって
いるような気がします。

コンパイル時のログ全部や、cmakeのコンフィグを添付してくれると分るかもしれません。

仰る通り、x86用のライブラリを記載しておりました。
下記のように指定することで、コンパイル時に出ていたエラーはなくなりました。

DEPENDPATH += /usr/arm-linux-gnueabihf/include/opencv2\
/usr/arm-linux-gnueabihf/include/opencv
INCLUDEPATH += /usr/arm-linux-gnueabihf/include/opencv2\
/usr/arm-linux-gnueabihf/include/opencv
LIBS += -L/usr/arm-linux-gnueabihf/lib -lopencv_core -lopencv_highgui

しかし、前スレで明記した実行時のエラーは未だ表示されたままで、プログラムが起動できておりません。

Makefileを添付致しますので、ご確認お願い致します。

> 勘なのですが、x86のライブラリをサーチするように記載していませんか?
> arm用のコンパイラーが x86 (または x86_64)のライブラリを見付けてしまって
> いるような気がします。
>
> コンパイル時のログ全部や、cmakeのコンフィグを添付してくれると分るかもしれません。

ファイル ファイルの説明
Makefile.txt
/tmp/hoge: error while loading shared libraries: libopencv_core.so.2.3: cannot open shared object file: No such file or directory

は、「実行時に libopencv_core.so.2.3 がない」という意味です。

コンパイルした後、どのように /tmp/hoge を Armadillo に移動しているか教
えてください。 もしライブラリを入れていなければ、
libopencv_core.so.2.3 も Armadillo に移動してみてください。

http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
も参考になるかもしれません。

お世話になっております。

下記を参照して無事解決致しました。

Armadillo-840の製品マニュアル 14.6「オリジナルQtアプリケーションをatmark-distへ統合」を参照

作成したQtアプリケーションをatmark-distへ統合してから、
ユーザーランドのイメージファイル作成して、
作成したイメージファイルでArmadilloのフラッシュメモリを更新する必要がありました。

>

> /tmp/hoge: error while loading shared libraries: libopencv_core.so.2.3: cannot open shared object file: No such file or directory
> 

> は、「実行時に libopencv_core.so.2.3 がない」という意味です。
>
> コンパイルした後、どのように /tmp/hoge を Armadillo に移動しているか教
> えてください。 もしライブラリを入れていなければ、
> libopencv_core.so.2.3 も Armadillo に移動してみてください。
>
> http://manual.atmark-techno.com/armadillo-guide/armadillo-guide-2_ja-2…
> も参考になるかもしれません。
>