OpenCVをsuzakuで使う
出典: Wikimura
OpenCVをSUZAKUで実行するためのクロス開発環境の構築と,実行時の注意点などをまとめます.
■キーワード : Suzaku, OpenCV, PowerPC, Linux, クロスコンパイル
目次 |
必要なもの
- PC
- SUZAKU-V (sz310)
- VMware Player
- ATDE[1]
- VMware上で動作する開発用仮想linux環境
- Linux Kernel[2]
- Atmark-dist[3]
- OpenCV source
バージョン情報
- PC
- WindowsXP SP3
- ATDE
- atde2-20090403.zip
- Linux Kernel
- linux-2.6.18-at11.tar.gz
- Atmark-dist
- atmark-dist-20090318.tar.gz
- OpenCV
- OpenCV-2.0.0.tar.bz2
- opencv-1.1pre1.tar.gz
手順
ATDEによるクロス開発環境の準備
ATDEを実行し,Linuxを起動する.以下ではユーザー名:atmarkでログインし,ホームディレクトリ:/home/atmark/以下で作業を進めるとこととする.
atmark-dist-20090318.tar.gzとlinux-2.6.18-at11.tar.gzをそれぞれ,/home/atmark/atmark-dist-20090318/と/home/linux-2.6.18-at11/として展開する.
ディレクトリatmark-dist-20090318に移動し,linux-2.6.xという名称のlinuxlinux-2.6.18-at11へのシンボリックリンクを作成.
ln -s /home/atmark/linux-2.6.18-at11 ./linux-2.6.x
Linuxをビルドする.ビルドの方法等についてはSUZAKUソフトウェアマニュアルを参照すること.
make menuconfig make dep make
ビルドが正常に完了すれば,SUZAKU用Linuxクロス開発環境ができあがり.
OpenCVのビルド・インストール (Ver.2.0.0)
OpenCV-2.0.0.tar.bz2を/home/atmark/OpenCV-2.0.0に展開する.
次にOpenCVのビルドに必要なcmakeをインストールする.
$ su # apt-get install cmake # exit
cmakeを実行する前に,環境変数をpowerpc-linux向けに変更する.
$ export CC=powerpc-linux-gcc $ export CXX=powerpc-linux-g++ $ export LD=powerpc-linux-ld $ export AR=powerpc-linux-ar $ export AS=powerpc-linux-as $ export RANLIB=powerpc-linux-ranlib $ export STRIP=powerpc-linux-strip $ export CPP=powerpc-linux-cpp
Makefileや,ビルドの際に必要な各種ファイルを作成するため,OpenCV-2.0.0/releaseというディレクトリを作成する.
$ cd /home/atmark/OpenCV-2.0.0 $ mkdir release
releaseに移動し,cmakeを実行する.-iオプションはインタラクティブで各種設定を行うことを示す.
../はディレクトリOpenCV-2.0.0を指す.
$ cd release $ cmake -i -D CMAKE_BUILD_TYPE=RELEASE ../
atmark@atde:~/suzaku2/OpenCV-2.0.0/release$ cmake -i -D CMAKE_BUILD_TYPE=RELEASE ../ Would you like to see advanced options? [No]:YES Please wait while cmake processes CMakeLists.txt files.... Variable Name: BUILD_EXAMPLES Description: Build all examples Current Value: OFF New Value (Enter to keep current value): OFF Variable Name: BUILD_LATEX_DOCS Description: Build LaTeX OpenCV Documentation Current Value: OFF New Value (Enter to keep current value): OFF Variable Name: BUILD_NEW_PYTHON_SUPPORT Description: Build with Python support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: BUILD_OCTAVE_SUPPORT Description: Build with Octave support Current Value: OFF New Value (Enter to keep current value): OFF Variable Name: BUILD_PACKAGE Description: Build a installer with the SDK Current Value: OFF New Value (Enter to keep current value): OFF Variable Name: BUILD_SWIG_PYTHON_SUPPORT Description: Build with older SWIG-based Python support Current Value: OFF New Value (Enter to keep current value): OFF Variable Name: BUILD_TESTS Description: Build tests Current Value: ON New Value (Enter to keep current value): OFF Variable Name: CMAKE_AR Description: Path to a program. Current Value: /usr/bin/ar New Value (Enter to keep current value): Variable Name: CMAKE_BACKWARDS_COMPATIBILITY Description: For backwards compatibility, what version of CMake commands and syntax should this version of CMake allow. Current Value: 2.4 New Value (Enter to keep current value): Variable Name: CMAKE_BUILD_TYPE Description: Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel. Current Value: RELEASE New Value (Enter to keep current value): Variable Name: CMAKE_COLOR_MAKEFILE Description: Enable/Disable color output during build. Current Value: ON New Value (Enter to keep current value): ON Variable Name: CMAKE_CONFIGURATION_TYPES Description: Configs Current Value: Debug;Release New Value (Enter to keep current value): Variable Name: CMAKE_CXX_COMPILER Description: CXX compiler. Current Value: /usr/bin/powerpc-linux-g++ New Value (Enter to keep current value): Variable Name: CMAKE_CXX_FLAGS Description: Flags used by the compiler during all build types. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_CXX_FLAGS_DEBUG Description: Flags used by the compiler during debug builds. Current Value: -g New Value (Enter to keep current value): Variable Name: CMAKE_CXX_FLAGS_RELEASE Description: Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files). Current Value: -O3 -DNDEBUG New Value (Enter to keep current value): Variable Name: CMAKE_C_COMPILER Description: C compiler. Current Value: /usr/bin/powerpc-linux-gcc New Value (Enter to keep current value): Variable Name: CMAKE_C_FLAGS Description: Flags for C compiler. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_C_FLAGS_DEBUG Description: Flags used by the compiler during debug builds. Current Value: -g New Value (Enter to keep current value): Variable Name: CMAKE_C_FLAGS_RELEASE Description: Flags used by the compiler during release builds (/MD /Ob1 /Oi /Ot /Oy /Gs will produce slightly less optimized but smaller files). Current Value: -O3 -DNDEBUG New Value (Enter to keep current value): Variable Name: CMAKE_EXE_LINKER_FLAGS Description: Flags used by the linker. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_EXE_LINKER_FLAGS_DEBUG Description: Flags used by the linker during debug builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_EXE_LINKER_FLAGS_RELEASE Description: Flags used by the linker during release builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_INSTALL_PREFIX Description: Install path prefix, prepended onto install directories. Current Value: /usr/local New Value (Enter to keep current value): /home/atmark/opencv/release Variable Name: CMAKE_MAKE_PROGRAM Description: Path to a program. Current Value: /usr/bin/make New Value (Enter to keep current value): Variable Name: CMAKE_MODULE_LINKER_FLAGS Description: Flags used by the linker during the creation of modules. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_MODULE_LINKER_FLAGS_DEBUG Description: Flags used by the linker during debug builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_MODULE_LINKER_FLAGS_RELEASE Description: Flags used by the linker during release builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_RANLIB Description: Path to a program. Current Value: /usr/bin/ranlib New Value (Enter to keep current value): Variable Name: CMAKE_SHARED_LINKER_FLAGS Description: Flags used by the linker during the creation of dll's. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_SHARED_LINKER_FLAGS_DEBUG Description: Flags used by the linker during debug builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_SHARED_LINKER_FLAGS_RELEASE Description: Flags used by the linker during release builds. Current Value: New Value (Enter to keep current value): Variable Name: CMAKE_SKIP_RPATH Description: If set, runtime paths are not added when using shared libraries. Current Value: NO New Value (Enter to keep current value): Variable Name: CMAKE_USE_RELATIVE_PATHS Description: If true, cmake will use relative paths in makefiles and projects. Current Value: OFF New Value (Enter to keep current value): Variable Name: CMAKE_VERBOSE_MAKEFILE Description: If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo. Current Value: FALSE New Value (Enter to keep current value): Variable Name: ENABLE_OPENMP Description: (none) Current Value: OFF New Value (Enter to keep current value): Variable Name: ENABLE_PROFILING Description: Enable profiling in the GCC compiler (Add flags: -g -pg) Current Value: OFF New Value (Enter to keep current value): Variable Name: EXECUTABLE_OUTPUT_PATH Description: Output directory for applications Current Value: /home/atmark/OpenCV-2.0.0/release/bin New Value (Enter to keep current value): /home/atmark/opencv/release/bin Variable Name: INSTALL_C_EXAMPLES Description: Install C examples Current Value: OFF New Value (Enter to keep current value): Variable Name: INSTALL_OCTAVE_EXAMPLES Description: Install Octave examples Current Value: OFF New Value (Enter to keep current value): Variable Name: INSTALL_PYTHON_EXAMPLES Description: Install Python examples Current Value: OFF New Value (Enter to keep current value): Variable Name: IPP_PATH Description: The path to IPP dynamic libraries Current Value: IPP_PATH-NOTFOUND New Value (Enter to keep current value): Variable Name: JASPER_INCLUDE_DIR Description: Path to a file. Current Value: JASPER_INCLUDE_DIR-NOTFOUND New Value (Enter to keep current value): Variable Name: JASPER_LIBRARY Description: Path to a library. Current Value: JASPER_LIBRARY-NOTFOUND New Value (Enter to keep current value): Variable Name: JPEG_INCLUDE_DIR Description: Path to a file. Current Value: JPEG_INCLUDE_DIR-NOTFOUND New Value (Enter to keep current value): Variable Name: JPEG_LIBRARY Description: Path to a library. Current Value: JPEG_LIBRARY-NOTFOUND New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libjpeg.so Variable Name: LIBRARY_OUTPUT_PATH Description: Output directory for libraries Current Value: /home/atmark/OpenCV-2.0.0/release/lib New Value (Enter to keep current value): /home/atmark/opencv/release/lib Variable Name: OPENCV_BUILD_3RDPARTY_LIBS Description: Build 3rd party libraries Current Value: FALSE New Value (Enter to keep current value): Variable Name: OPENCV_CONFIG_FILE_INCLUDE_DIR Description: Where to create the platform-dependant cvconfig.h Current Value: /home/atmark/OpenCV-2.0.0/release New Value (Enter to keep current value): /home/atmark/opencv/release/ Variable Name: OPENCV_EXTRA_C_FLAGS Description: Extra compiler options Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_EXTRA_C_FLAGS_DEBUG Description: Extra compiler options for Debug build Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_EXTRA_C_FLAGS_RELEASE Description: Extra compiler options for Release build Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS Description: Extra linker flags Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS_DEBUG Description: Extra linker flags for Debug build Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_EXTRA_EXE_LINKER_FLAGS_RELEASE Description: Extra linker flags for Release build Current Value: New Value (Enter to keep current value): Variable Name: OPENCV_WARNINGS_ARE_ERRORS Description: Treat warnings as errors Current Value: OFF New Value (Enter to keep current value): Variable Name: OPENCV_WHOLE_PROGRAM_OPTIMIZATION Description: Flags for whole program optimization. Current Value: OFF New Value (Enter to keep current value): Variable Name: PKG_CONFIG_EXECUTABLE Description: pkg-config executable Current Value: /usr/bin/pkg-config New Value (Enter to keep current value): Variable Name: PNG_LIBRARY Description: Path to a library. Current Value: /usr/lib/libpng.so New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libpng.so Variable Name: PNG_PNG_INCLUDE_DIR Description: Path to a file. Current Value: /usr/include New Value (Enter to keep current value): /usr/powerpc-linux-gnu/include Variable Name: PYTHON_EXECUTABLE Description: Path to a program. Current Value: /usr/bin/python2.4 New Value (Enter to keep current value): Variable Name: PYTHON_INCLUDE_PATH Description: Path to a file. Current Value: /usr/include/python2.4 New Value (Enter to keep current value): Variable Name: PYTHON_LIBRARY Description: Path to a library. Current Value: /usr/lib/python2.4/config/libpython2.4.so New Value (Enter to keep current value): Variable Name: SVNVERSION_PATH Description: Path to a program. Current Value: SVNVERSION_PATH-NOTFOUND New Value (Enter to keep current value): Variable Name: TIFF_INCLUDE_DIR Description: Path to a file. Current Value: TIFF_INCLUDE_DIR-NOTFOUND New Value (Enter to keep current value): Variable Name: TIFF_LIBRARY Description: Path to a library. Current Value: TIFF_LIBRARY-NOTFOUND New Value (Enter to keep current value): Variable Name: USE_IPP Description: Use IPP when available Current Value: New Value (Enter to keep current value): Variable Name: USE_OMIT_FRAME_POINTER Description: Enable -fomit-frame-pointer for GCC Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_1394 Description: Include IEEE1394 support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_FFMPEG Description: Include FFMPEG support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_GSTREAMER Description: Include Gstreamer support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_GTK Description: Include GTK support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_JASPER Description: Include JPEG2K support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_JPEG Description: Include JPEG support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_PNG Description: Include PNG support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_TIFF Description: Include TIFF support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_UNICAP Description: Include Unicap support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_V4L Description: Include Video 4 Linux support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: WITH_XINE Description: Include Xine support Current Value: ON New Value (Enter to keep current value): OFF Variable Name: ZLIB_INCLUDE_DIR Description: Path to a file. Current Value: /usr/include New Value (Enter to keep current value): /usr/powerpc-linux-gnu/include Variable Name: ZLIB_LIBRARY Description: Path to a library. Current Value: /usr/lib/libz.so New Value (Enter to keep current value): /usr/powerpc-linux-gnu/lib/libz.so Please wait while cmake processes CMakeLists.txt files....
makeの実行.
$ make
make installの実行.
$ su # make install # exit
make install 実行結果
root@atde:/home/atmark/OpenCV-2.0.0/release# make install [ 0%] Built target cxcore_pch_dephelp [ 1%] Built target pch_Generate_cxcore [ 56%] Built target opencv_lapack [ 59%] Built target zlib [ 60%] Built target flann [ 63%] Built target cxcore [ 63%] Built target cv_pch_dephelp [ 63%] Built target pch_Generate_cv [ 76%] Built target cv [ 76%] Built target cvaux_pch_dephelp [ 77%] Built target pch_Generate_cvaux [ 77%] Built target highgui_pch_dephelp [ 77%] Built target pch_Generate_highgui [ 81%] Built target highgui [ 82%] Built target ml_pch_dephelp [ 82%] Built target pch_Generate_ml [ 84%] Built target ml [ 98%] Built target cvaux [100%] Built target cvhaartraining [100%] Built target createsamples [100%] Built target haartraining [101%] Built target performance [102%] Built target traincascade Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcxcore.so Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcv.so Linking CXX shared library CMakeFiles/CMakeRelink.dir/libcvaux.so Linking CXX shared library CMakeFiles/CMakeRelink.dir/libml.so Linking CXX shared library CMakeFiles/CMakeRelink.dir/libhighgui.so Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_createsamples Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_haartraining Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_performance Linking CXX executable CMakeFiles/CMakeRelink.dir/opencv_traincascade Install the project... -- Install configuration: "Release" -- Installing /home/atmark/opencv/release/share/opencv/OpenCVConfig.cmake -- Installing /home/atmark/opencv/release/lib/pkgconfig/opencv.pc -- Installing /home/atmark/opencv/release/lib/libcxcore.so.2.0.0 -- Installing /home/atmark/opencv/release/include/opencv/cxcore.h -- Installing /home/atmark/opencv/release/include/opencv/cxcore.hpp -- Installing /home/atmark/opencv/release/include/opencv/cxerror.h -- Installing /home/atmark/opencv/release/include/opencv/cxmat.hpp -- Installing /home/atmark/opencv/release/include/opencv/cxmisc.h -- Installing /home/atmark/opencv/release/include/opencv/cxoperations.hpp -- Installing /home/atmark/opencv/release/include/opencv/cxtypes.h -- Installing /home/atmark/opencv/release/include/opencv/cvver.h -- Installing /home/atmark/opencv/release/include/opencv/cvwimage.h -- Installing /home/atmark/opencv/release/include/opencv/cxflann.h -- Installing /home/atmark/opencv/release/lib/libcv.so.2.0.0 -- Installing /home/atmark/opencv/release/include/opencv/cv.h -- Installing /home/atmark/opencv/release/include/opencv/cv.hpp -- Installing /home/atmark/opencv/release/include/opencv/cvcompat.h -- Installing /home/atmark/opencv/release/include/opencv/cvtypes.h -- Installing /home/atmark/opencv/release/lib/libcvaux.so.2.0.0 -- Installing /home/atmark/opencv/release/include/opencv/cvaux.h -- Installing /home/atmark/opencv/release/include/opencv/cvaux.hpp -- Installing /home/atmark/opencv/release/include/opencv/cvvidsurv.hpp -- Installing /home/atmark/opencv/release/lib/libml.so.2.0.0 -- Installing /home/atmark/opencv/release/include/opencv/ml.h -- Installing /home/atmark/opencv/release/lib/libhighgui.so.2.0.0 -- Installing /home/atmark/opencv/release/include/opencv/highgui.h -- Installing /home/atmark/opencv/release/include/opencv/highgui.hpp -- Installing /home/atmark/opencv/release/bin/opencv_haartraining -- Installing /home/atmark/opencv/release/bin/opencv_createsamples -- Installing /home/atmark/opencv/release/bin/opencv_performance -- Installing /home/atmark/opencv/release/bin/opencv_traincascade -- Installing /home/atmark/opencv/release/share/opencv/doc/index.htm -- Installing /home/atmark/opencv/release/share/opencv/doc/haartraining.htm -- Installing /home/atmark/opencv/release/share/opencv/doc/ChangeLog.htm -- Installing /home/atmark/opencv/release/share/opencv/doc/CMakeLists.txt -- Installing /home/atmark/opencv/release/share/opencv/doc/packaging.txt -- Installing /home/atmark/opencv/release/share/opencv/doc/license.txt -- Installing /home/atmark/opencv/release/share/opencv/doc/python.txt -- Installing /home/atmark/opencv/release/share/opencv/doc/latex_readme.txt -- Installing /home/atmark/opencv/release/share/opencv/doc/opencv.jpg -- Installing /home/atmark/opencv/release/share/opencv/doc/opencv-logo.png -- Installing /home/atmark/opencv/release/share/opencv/doc/opencv-logo2.png -- Installing /home/atmark/opencv/release/share/opencv/doc/opencv.pdf -- Installing /home/atmark/opencv/release/share/opencv/doc/pattern.pdf -- Installing /home/atmark/opencv/release/share/opencv/doc/papers/algo_tracking.pdf -- Installing /home/atmark/opencv/release/share/opencv/doc/papers/camshift.pdf -- Installing /home/atmark/opencv/release/share/opencv/doc/papers/avbpa99.ps -- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/TestSeq.doc -- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/Blob_Tracking_Modules.doc -- Installing /home/atmark/opencv/release/share/opencv/doc/vidsurv/Blob_Tracking_Tests.doc -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_fullbody.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_upperbody.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_lefteye.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_lefteye_2splits.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_righteye_2splits.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_eyepair_big.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_default.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_mouth.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_upperbody.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_profileface.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_eye_tree_eyeglasses.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_righteye.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_lowerbody.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_nose.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_eye.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt_tree.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_frontalface_alt2.xml -- Installing /home/atmark/opencv/release/share/opencv/haarcascades/haarcascade_mcs_eyepair_small.xml -- Installing /home/atmark/opencv/release/share/opencv/lbpcascades/lbpcascade_frontalface.xml
以上で,OpenCVのインストールは完了.
OpenCVを使用したアプリケーションのビルド (Ver.2.0.0)
クロスコンパイル環境においては,コンパイルオプションが多岐にわたるため,Makefileにしている. 基本はSUZAKUのMakefileを流用している.
############################################################ ## Makefile for OpenCV on SUZAKU ## Akira MIYASAKA / Kimura Laboratory, TUS (kimura-lab.net) ## ROOTDIR : Directory of atmark-dist ## OPENCV_DIR : Install Directory of OpenCV for PowerPC ############################################################ ROOTDIR=/home/atmark/atmark-dist-20090318 OPENCV_DIR=/home/atmark/opencv/release/bin OPENCV_LIB_OPT= -lcxcore -lcv -lhighgui -lcvaux -lml EXEC = sample3 OBJS = sample3.o ROMFSDIR = $(ROOTDIR)/romfs ROMFSINST = romfs-inst.sh PATH := $(PATH):$(ROOTDIR)/tools UCLINUX_BUILD_USER = 1 include $(ROOTDIR)/.config LIBCDIR = $(CONFIG_LIBCDIR) include $(ROOTDIR)/config.arch all: $(EXEC) $(EXEC): $(OBJS) $(CXX) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS) -lrt -L$(OPENCV_DIR)/lib $(OPENCV_LIB_OPT) clean: -rm -f $(EXEC) *.elf *.gdb *.o romfs: $(ROMFSINST) /bin/$(EXEC) %.o: %.cpp $(CXX) -c $(CFLAGS) -o $@ $< -lrt -I$(OPENCV_DIR)/include/opencv/
SUZAKUへのライブラリ追加
SUZAKU上のROMファイルシステムは,atmark-dist-20090318/romfs/以下をイメージ化することで構築されている. そこで,SUZAKU上に任意のファイルを追加するには,atmark-dist-20090318/romfs/以下にファイルを追加した後,atmark-dist-20090318のディレクトリ内でmake imageを実行することで,atmark-dist-20090318/images/内にimage.binが生成される.
OpenCVを使用したプログラムをSUZAKU上で実行するには,OpenCVのライブラリが必要になるため,atmark-dist-20090318/romfs/lib/以下に,OpenCVのライブラリ及び,それらのライブラリが必要とするライブラリを追加する必要がある.
しかし,それらのライブラリを単純に追加すると,SUZAKUのフラッシュメモリから溢れてしまう.
- カーネルイメージ最大 : 6.81MB
そこで,追加する必要のあるライブラリはUZAKU起動後に/tmp/以下にLAN経由でダウンロードし,この/tmp/以下のライブラリに対するシンボリックリンクのみをatmark-dist-20090318/romfs/lib/に追加することとした.
この方法だと,LAN側にライブラリを保持するサーバーが必要になるため,スタンドアロンで動かすことができない.そこで,実際のシステムに組み込む際はSUZAKUにSDカードを搭載する.
- 必要なOpenCVライブラリ
- libcv.so.2.0
- ~/opencv/release/lib/
- libcvaux.so.2.0
- ~/opencv/release/lib/
- libcxcore.so.2.0
- ~/opencv/release/lib/
- libhighgui.so.2.0
- ~/opencv/release/lib/
- libcv.so.2.0
- その他のライブラリ
- libdl.so.2
- /usr/powerpc-linux-gnu/lib/libdl.so.2
- libm.so.6
- /usr/powerpc-linux-gnu/lib/libm.so.6
- libpthread.so.0
- /usr/powerpc-linux-gnu/lib/libpthread.so.0
- librt.so.1
- /usr/powerpc-linux-gnu/lib/librt.so.1
- libstdc++.so.6
- /usr/powerpc-linux-gnu/lib/libstdc++.so.6
- libdl.so.2
$ cd /home/atmark/atmark-dist-20090318/romfs/lib/ $ ln -s ../tmp/lib/libcv.so.2.0 ./libcv.so.2.0 $ ln -s ../tmp/lib/libcvaux.so.2.0 ./libcvaux.so.2.0 $ ln -s ../tmp/lib/libcxcore.so.2.0 ./libcxcore.so.2.0 $ ln -s ../tmp/lib/libhighgui.so.2.0 ./libhighgui.so.2.0 $ ln -s ../tmp/lib/libml.so.2.0 ./libml.so.2.0 $ ln -s ../tmp/lib/libdl.so.2 ./libdl.so.2 $ ln -s ../tmp/lib/libm.so.6 ./libm.so.6 $ ln -s ../tmp/lib/libpthread.so.0 ./libpthread.so.0 $ ln -s ../tmp/lib/librt.so.1 ./librt.so.1 $ ln -s ../tmp/lib/libstdc++.so.6 ./libstdc++.so.6
起動時にSUZAKU側でライブラリをダウンロードする必要がある. スクリプト化して/etc/rc.d/以下にSで始まるスクリプトファイルを置く.
これと併せて,SUZAKUのカーネルビルドオプションでwgetを追加して,スクリプトからwgetを使えるようにしなくてはならない. 起動スクリプトはパスが通っていないため,フルパス指定しなければならない.例:wgetだったら/usr/bin/wgetみたいな感じ.
イメージ化する上で必要な作業が全て終わったらmake imageを実行.
SUZAKUでの実行
SUZAKUのカーネルイメージを書き換える. 必要なライブラリの取得をスクリプト化してある場合は,そのままプログラムを実行できるはず.
まだライブラリを/tmp/lib以下にダウンロードしていない場合は,PCなどからftp経由でSUZAKUにアクセスして,/tmp/lib以下に必要なファイルをputする. そして実行.
以上できっとうまくいくはずです.
OpenCVのビルド・インストール (Ver.1.1.0)
opencv-1.1pre1.tar.gzを/home/atmark/OpenCV-1.1.0に展開する.
OpenCV-1.1.0にreleaseというディレクトリを作り,そこにインストールする.
$ mkdir release
./configureを実行する前に,環境変数をpowerpc-linux向けに変更する.
$ export CC=powerpc-linux-gcc $ export CXX=powerpc-linux-g++ $ export LD=powerpc-linux-ld $ export AR=powerpc-linux-ar $ export AS=powerpc-linux-as $ export RANLIB=powerpc-linux-ranlib $ export STRIP=powerpc-linux-strip $ export CPP=powerpc-linux-cpp
$ ./configure --prefix=/home/miyasaka/suzaku/OpenCV-1.1.0/release --host=powerpc-linux --enable-apps=no --enable-sse2=no --with-gtk=no --with-gthread=no --with-v4l=no --with-python=no

