交叉编译ARM平台的OpenCV1.0

首先,从http://www.opencv.org.cn下载1.0的源码包,然后解压出来,进入解压后的目录,再进行下面的修改:

将configure 文件下列内容注释掉(有两处),只保留GTK_CFLAGS="" 、GTK_LIBS="" 、have_gtk=no 三项内容(如下黑体所示);

# if test "$PKG_CONFIG" = "no" ; then

# echo "*** The pkg-config script could not be found. Make sure it is"

# echo "*** in your path, or set the PKG_CONFIG environment variable"

# echo "*** to the full path to pkg-config."

# echo "*** Or seehttp://www.freedesktop.org/software/pkgconfigto get pkgconfig."

# else

# PKG_CONFIG_MIN_VERSION=0.9.0

# if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then

# echo "$as_me:$LINENO: checking for \"gtk+-2.0 gdk-pixbuf-2.0\"" >&5

echo $ECHO_N "checking for \"gtk+-2.0 gdk-pixbuf-2.0\"... $ECHO_C" >&6

# if $PKG_CONFIG --exists ""gtk+-2.0 gdk-pixbuf-2.0"" ; then

# echo "$as_me:$LINENO: result: yes" >&5

#echo "${ECHO_T}yes" >&6

# succeeded=yes

# echo "$as_me:$LINENO: checking GTK_CFLAGS" >&5

#echo $ECHO_N "checking GTK_CFLAGS... $ECHO_C" >&6

# GTK_CFLAGS=`$PKG_CONFIG --cflags ""gtk+-2.0 gdk-pixbuf-2.0""`

# echo "$as_me:$LINENO: result: $GTK_CFLAGS" >&5

#echo "${ECHO_T}$GTK_CFLAGS" >&6

#

# echo "$as_me:$LINENO: checking GTK_LIBS" >&5

#echo $ECHO_N "checking GTK_LIBS... $ECHO_C" >&6

# GTK_LIBS=`$PKG_CONFIG --libs ""gtk+-2.0 gdk-pixbuf-2.0""`

# echo "$as_me:$LINENO: result: $GTK_LIBS" >&5

#echo "${ECHO_T}$GTK_LIBS" >&6

# else

GTK_CFLAGS=""

GTK_LIBS=""

## If we have a custom action on failure, don't print errors, but

## do set a variable so people can do so.

# GTK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors ""gtk+-

2.0 gdk-pixbuf-2.0""`

# fi

# else

# echo "*** Your version of pkg-config is too old. You need version

#$PKG_CONFIG_MIN_VERSION or newer."

# echo "*** Seehttp://www.freedesktop.org/software/pkgconfig"

# fi

# fi

# if test $succeeded = yes; then

# have_gtk=yes

#cat >>confdefs.h <<\_ACEOF

##define HAVE_GTK

#_ACEOF

# else

have_gtk=no

# fi

修改完后进行下面的操作:

安装好交叉编译工具链后再进行如下操作:

./configure --host=arm-linux --prefix=/home/guochongxin/opencv-arm2/ --without-gtk --without-carbon --without-v4l --without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swig

在命令行里面加入了--without-v4l,因为编译时会出错,还有我暂时不用到v4l,如果你要做摄相头方面的应用,就需要去掉该参数,但编译时会出错,这个问题我也在改进中,有解决方法就会发出来共享.

上面的配置没有把libjpeg编译进去,也不会添加v4l,而配置修改为:

./configure --host=arm-linux --prefix=/home/guochongxin/opencv-arm --without-gtk --without-carbon--without-quicktime --without-1394libs --without-ffmpeg --without-python --without-swigCXX=arm-linux-g++ CPPFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include CFLAGS=-I/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/include LDFLAGS=-L/home/guochongxin/crosstool/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib

则在编译到v4l时没有错误提示,也把libjpeg编译进去,因为把libjpeg的路径也通过配置设置进去了,注意libjpeg之前要交叉编译才可以,也注意上面的路径,注意libjpeg库要放到交叉编译工具链的库中.

接下来进行下面的操作:

make

make install

这里会在/home/guochongxin/opencv-arm2/目录下安装编译成功的文件,接下来如果需要编译代码,则需要设置如下的环境变量:

export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/guochongxin/opencv-arm2/lib/pkgconfig/

编译程序的方法是:

arm-linux-g++ `pkg-config --cflags --libs opencv`source.cpp -o destination

注意上面两个黑点是键盘上左上角波浪号在按下Shift键后输入的,而不是上引号,要区分开来.

上面步骤只是成功后发布出来,可能有小部分有问题,请根据实际情况修改,仅供参考,用到的交叉编译工具链是3.4.5版本的,制作过程在前面的博文有发表出来.

参考资料:《OpenCV 在Liod 开发板的移植及其应用》(华东师范大学电子系嵌入式竞赛组)

你可能感兴趣的:(交叉编译ARM平台的OpenCV1.0)