[Armadillo:05959] ターゲット用uvcdynctrlの作成方法

Kazuo Yoshimoto email@hidden
2010年 10月 21日 (木) 13:09:55 JST


お世話になっております。armadillo500-fx利用者の吉本です。

今回初めて投稿させていただきますので、投稿の仕方が正し
いのかわかりませんので、間違っていましたら、ご指摘ください。

armadillo500-fxのWebカメラ(QCAM Orbit AF)(046d:0994)を
接続し、画像入力・画像処理・カメラ制御を行わせるシステムを
構築したいと考えています。

開発環境は以下のとおりです。

atde2-20090403
VMwarePlayer  2.5.4 build-246459
atmark-dist-20090318
linux-2.6.26-at6

作業用PC  Windows Vista Home Premium
32ビットオペレーティングシステム

プロセッサ Intel(R)Core(TM)2 Duo CPU T7100 1.8GHz
メモリ    1GB


SDL および SDL_image を使い、JPEGやBMP等の静止画
をarmadillo500-fxに表示することはできています。

またカメラ画像のプレビューも320x240のサイズでリアルタイムで
できています。

次にカメラの制御(パン・チルト・フォーカス・ズーム・シャープネス等)
をarmadillo500-fxのタッチパネルで行わせようと思い、uvcdynctrlを
実装させようと思い、
[Armadillo:04660] Re: Armadillo-500 FXによるUSBカメラの制御
を参考に作業をすすめていたところ、不具合が出てしまいました。

libwebcamのインストールの準備としてcmake/gengetopt/libxml2-dev
はあらかじめ sudo apt-get install cmake gengetopt libxml2-dev
で読み込んであります。

[HOWTO: クロス開発用ライブラリをインストールする方法]を参考に

libxml2_2.6.27.dfsg-6+etch1_arm.deb を入手し、
dpkg-cross -b -aarm libxml2_2.6.27.dfsg-6+etch1_arm.deb
で libxml2-arm-cross_2.6.27.dfsg-6+etch1_all.deb を生成し、
dpkg -i libxml2-arm-cross_2.6.27.dfsg-6+etch1_all.deb で
libxml2-arm-cross(2.6.27.dfsg-6+etch1)を設定しています...

というメッセージが表示されていました。これでパッケージの
インストールはできているのでしょうか。

次に、 svn co http://svn.quickcamteam.net/svn/qct/Linux/ libwebcam
でソースのチェックアウトをおこない、

Common/include の下に uvcvideo.h と uvc_compat.hを置きました。

wget http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk/uvcvideo.h
wget http://svn.berlios.de/svnroot/repos/linux-uvc/linux-uvc/trunk/uvc_compat.h

で行おうとしたのですが、認証がうまくいかずにヘッダーファイルを置けませんでした。 


仕方がないので、以前、別な方法で取得したuvcvideo.h と uvc_compat.hを置きました。

以下、次の手順で作業を進めました。

$ cd ../../
$ mkdir build
$ cd build
$ cmake ..
$ find ../../ -type f -exec sed -i 's/gcc/arm-linux-gcc/' {} \;
$ make

cmake をしたときのメッセージ

-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Check size of void*
-- Check size of void* - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Found LibXml2: /usr/lib/libxml2.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/atmark/armwork/libwebcam/build


Windows上の仮想マシンでgccでmakeし、 sudo make installでは正しくできました。 



しかし、

find ../../ -type f -exec sed -i 's/gcc/arm-linux-gcc/' {} \;
make
でターゲット用のmakeをおこなうと次のようにエラーで終了してしまいます。


-- Configuring done
-- Generating done
-- Build files have been written to: /home/atmark/armwork/libwebcam/build
Scanning dependencies of target webcam
[ 16%] Building C object Libs/libwebcam/CMakeFiles/webcam.dir/libwebcam.o
[ 33%] Building C object Libs/libwebcam/CMakeFiles/webcam.dir/dynctrl.o
Linking C shared library libwebcam.so
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld: skipping 
incompatible /usr/arm-linux-gnu/bin/../../lib/libxml2.so when searching 
for -lxml2
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld: skipping 
incompatible /usr/arm-linux-gnu/bin/../../lib/libxml2.a when searching 
for -lxml2
/usr/lib/gcc/arm-linux-gnu/4.1.2/../../../../arm-linux-gnu/bin/ld: cannot 
find -lxml2
collect2: ld returned 1 exit status
make[2]: *** [Libs/libwebcam/libwebcam.so.0.1.2] エラー 1
make[1]: *** [Libs/libwebcam/CMakeFiles/webcam.dir/all] エラー 2
make: *** [all] エラー 2



/usr/lib のlibxml2* のファイルを以下に示します。

-rwxr-xr-x 1 root root 1435174 2009-08-06 22:34 /usr/lib/libxml2.a
-rwxr-xr-x 1 root root     804 2009-08-06 22:34 /usr/lib/libxml2.la
lrwxrwxrwx 1 root root      17 2010-10-21 08:38 /usr/lib/libxml2.so -> 
libxml2.so.2.6.27
lrwxrwxrwx 1 root root      17 2010-10-19 23:45 /usr/lib/libxml2.so.2 -> 
libxml2.so.2.6.27
-rwxr-xr-x 1 root root 1148316 2009-08-06 22:34 /usr/lib/libxml2.so.2.6.27

なぜ、このようなエラーになるのか、お教えください。

また、
wget http://svn.berlios.de/..........
svn checkout svn://svn.berlios.de/......
でソースを入手できないのですが、その代わりの方法をご存知でしたらお教えください。  


よろしくお願いします。




armadillo メーリングリストの案内