一、交叉编译opencv 构造: 下载:各个库的下载可以直接搜名字到官网下载 几个关键解释: “--prefix=” 后边跟make install时的位置,本例中,libz在make install时将安装到/usr/arm-linux-gnueabihf中 “--host=” 后边跟arm-linux表明使用的是ARM环境 有configure的才能进行configure配置 4)所有的makefile修改类似 Libz的交叉编译 第一步:# ./configure --prefix=/usr/arm-linux-gnueabihf --shared 第二步:修改makefile,主要有下边几个,修改的时候通篇参照即可 CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar rc RANLIB=arm-linux-gnueabihf-ranlib STRIP = arm-linux-gnueabihf-strip 如果有ARCH的话,ARCH=ARM 第三步:#sudo make #sudo make install Libjpeg的交叉编译 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc 第二步:参考1)中方法修改makefile 第三步:#sudo make #sudo make install Libpng的交叉编译 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc 第二步:参考1)中方法修改makefile 第三步:#sudo make #sudo make install Yasm的交叉编译 第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static 第二步:修改makefile 第三步:#sudo make #sudo make install Libx264的交叉编译 第一步:#CC=arm-linux-gnueabihf-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/arm-linux-gnueabihf 第二步:修改config.mak里的参数,因为makefile要调用config.mak,所以修改方法同makefile 第三步:#sudo make #sudo make install Libxvid的交叉编译 第一步:首先切换目录 #cd build/generic 第二步:#./configure --prefix=/usr/arm-linux-gnueabihf --host=arm-linux --disable-assembly 第三步:#sudo make #sudo make install ffmpeg的交叉编译 第一步: ./configure --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/arm-linux-gnueabihf/include --extra-ldflags=-L/usr/arm-linux-gnueabihf/lib --prefix=/usr/arm-linux-gnueabihf 第二步:修改makefile文件 第三步:#sudo make #sudo make install 第四步:将ffmpeg加入pkg-config 执行#sudo gedit /etc/bash.bashrc,在末尾加入 export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/arm-linux-gnueabihf /lib/pkgconfig export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf /lib/ 完毕后使用命令:#source /etc/bash.bashrc 或者单独使用三个export,不过寿命只在一个终端中,终端关闭时就失效。 几个关键解释:--extra-flags指向xvid的安装路径,--extra-ldflags指向x264的路径 安装cmake-gui 执行:#sudo apt-get install cmake-qt-gui Opencv的交叉编译 第一步:修改opencv/platflrms/linux/目录下的arm-gnueabi.toolchain.cmake,将其所有删掉,写入: set( CMAKE_SYSTEM_NAME Linux ) set( CMAKE_SYSTEM_PROCESSOR arm ) set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc ) set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ ) 第二步:在opencv目录下新建build目录,进入build目录,执行命令: #cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ../ 这时,要保证出现: 第三步:使用cmake-gui打开CMakeCache.txt,去掉所有的无关项,修改CMAKE_INSTALL_PREFIX,来确定make install的目录 第四步:#sudo make #sudo make install 可能出现的错误: opencv编译不通过,出现skip之类的,说明ffmpeg没编译好,或者其编译好了,但是pkg-config没有设置好,一定要设置好其环境 前边几步不通过的话,看看命令有没有少,或者有没有修改好makefile 在arm上使用时,一种方法时直接将编译好的opencv目录下的lib文件拷贝到开发板对应的/lib目录下,其他或者拷贝到自己指定的目录,并设置好环境变量即可使用
㈡ 用vs2008编了一段c++程序 用到opencv和crypto++库 调试无误 如何把这段程序交叉编译到实验室的嵌入式arm
把opencv的库加载arm的底层的代码中,关键你的arm支持什么操作系统
arm9可以移植操作系统
调试跟出问题可能跟自己的键盘按键设置有关,直接不用就行了哦
㈢ 怎么在linux上编译利用opencv的库 在arm开发板上运行
eclipse编译的arm文件? 1 eclipse编译用的是pc上的编译器还是交叉编译器? 2 arm文件是什么文件?c文件无所谓arm还是i386的 要在板子上运行,首先你要用cross compiler,然后才是把编译好的执行文件和库在板子上跑起来
㈣ 如何交叉编译openCV程序
1、意思就是 64位和32位的不兼容。 2、不知道你想表达的是什么意思。 3、是的。 4、DEBUG的程序一般可以调试,release一般无法调试,并且经过优化算法。由于优化算法不同,甚至导致DEBUG的程序和release程序运行结果不一样的情况
㈤ OpenCV交叉编译时用到的几个依赖库
OpenCV交叉编译时用到的几个依赖库。在BB Black 入门基础之OpenCV的交叉编译 一文中用到。大家有需要的可以拿去用。
↑收起
文件列表
.deps
----|ControlResource.Po
----|DCU99Editor.Po
----|DuplexEditor.Po
.eclipseme.tmp
----|emulation
----|----|PhoneBook.jad
----|----|PhoneBook.jar
verified
----|classes
----|----|com
----|----|----|north
----|----|----|----|phonebook
----|----|----|----|----|model
----|----|----|----|----|----|Account.class
----|----|----|----|----|----|ApplicationException.class
----|----|----|----|----|----|Index.class
----|----|----|----|----|----|Model$AccountFilter.class
----|----|----|----|----|----|Model$IndexFilter.class
----|----|----|----|----|----|Model.class
----|----|----|----|----|----|Preference.class
----|----|----|----|----|----|UserModel.class
ui
----|ConfirmationDialog.class
----|DetailInfoUI.class
----|Dialog.class
----|DialogListener.class
----|IndexFunctionUI$ListIndex.class
----|IndexFunctionUI.class
----|ListMerchantGroupUI.class
----|ListPhoneUI.class
----|LoginUI.class
----|MerchantGroupDetailInfoUI.class
----|NewPhoneUI.class
----|SearchPhoneUI.class
----|Title.class
----|UIController$1.class
----|UIController$EventID.class
----|UIController.class
----|WaitCanvas$1.class
----|WaitCanvas.class
----|WelcomeUI.class
PhoneBookMIDlet.class
.myeclipse
----|CVS
----|----|Repository
----|----|Root
.settings
----|CVS
----|----|Entries
----|----|Repository
----|----|Root
org.eclipse.core.resources.prefs
.svn
----|prop-base
props
text-base
----|readme.txt.svn-base
tmp
----|prop-base
props
text-base
all-wcprops
dir-prop-base
entries
format
.tmp_versions
----|dw4002.mod
dependence
----|ffmpeg-0.10.3.tar.bz2
----|jpegsrc.v8d.tar.gz
----|libpng-1.5.14.tar.gz
----|libv4l-0.6.1.gz
----|tiff-4.0.3.tar.gz
----|x264-snapshot-20120528-2245-stable.tar.bz2
----|xvidcore-1.3.2.tar.gz
----|zlib127.zip
..dir.dat
._CotEditor_346
._PortVaR
.classpath
.cproject
.cxl
.depend
.dw4002.ko.cmd
.dw4002.mod.o.cmd
.dw4002.o.cmd
.exe
.gitignore
.htaccess
.message
.pdf
.project
.qmake.internal.cache
.screenrc
.synopsys_dc.setup
.synopsys_pt.setup
.untf
.vimrc
.xhdl3.xref
㈥ 在ARM上运行交叉编译后的opencv文件,没有输出
一、交叉编译opencv
构造:
下载:各个库的下载可以直接搜名字到官网下载
几个关键解释:
“--prefix=” 后边跟make install时的位置,本例中,libz在make install时将安装到/usr/arm-linux-gnueabihf中
“--host=” 后边跟arm-linux表明使用的是ARM环境
有configure的才能进行configure配置
4)所有的makefile修改类似
Libz的交叉编译
第一步:# ./configure --prefix=/usr/arm-linux-gnueabihf --shared
第二步:修改makefile,主要有下边几个,修改的时候通篇参照即可
CC=arm-linux-gnueabihf-gcc
AR=arm-linux-gnueabihf-ar rc
RANLIB=arm-linux-gnueabihf-ranlib
STRIP = arm-linux-gnueabihf-strip
如果有ARCH的话,ARCH=ARM
第三步:#sudo make
#sudo make install
Libjpeg的交叉编译
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:参考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Libpng的交叉编译
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static CC=arm-linux-gnueabihf-gcc
第二步:参考1)中方法修改makefile
第三步:#sudo make
#sudo make install
Yasm的交叉编译
第一步:#./configure --host=arm-linux --prefix=/usr/arm-linux-gnueabihf --enable-shared --enable-static
第二步:修改makefile
第三步:#sudo make
#sudo make install
Libx264的交叉编译
第一步:#CC=arm-linux-gnueabihf-gcc ./configure --enable-shared --host=arm-linux --disable-asm --prefix=/usr/arm-linux-gnueabihf
第二步:修改config.mak里的参数,因为makefile要调用config.mak,所以修改方法同makefile
第三步:#sudo make
#sudo make install
Libxvid的交叉编译
第一步:首先切换目录 #cd build/generic
第二步:#./configure --prefix=/usr/arm-linux-gnueabihf --host=arm-linux --disable-assembly
第三步:#sudo make
#sudo make install
ffmpeg的交叉编译
第一步:
./configure --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm --enable-shared --disable-static --enable-gpl --enable-nonfree --enable-ffmpeg --disable-ffplay --enable-ffserver --enable-swscale --enable-pthreads --disable-yasm --disable-stripping --enable-libx264 --enable-libxvid --extra-cflags=-I/usr/arm-linux-gnueabihf/include --extra-ldflags=-L/usr/arm-linux-gnueabihf/lib --prefix=/usr/arm-linux-gnueabihf
第二步:修改makefile文件
第三步:#sudo make
#sudo make install
第四步:将ffmpeg加入pkg-config
执行#sudo gedit /etc/bash.bashrc,在末尾加入
export LD_LIBRARY_PATH=/usr/arm-linux-gnueabihf/lib/
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/arm-linux-gnueabihf /lib/pkgconfig
export PKG_CONFIG_LIBDIR=$PKG_CONFIG_LIBDIR:/usr/arm-linux-gnueabihf /lib/
完毕后使用命令:#source /etc/bash.bashrc
或者单独使用三个export,不过寿命只在一个终端中,终端关闭时就失效。
几个关键解释:--extra-flags指向xvid的安装路径,--extra-ldflags指向x264的路径
安装cmake-gui
执行:#sudo apt-get install cmake-qt-gui
Opencv的交叉编译
第一步:修改opencv/platflrms/linux/目录下的arm-gnueabi.toolchain.cmake,将其所有删掉,写入:
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_SYSTEM_PROCESSOR arm )
set( CMAKE_C_COMPILER arm-linux-gnueabihf-gcc )
set( CMAKE_CXX_COMPILER arm-linux-gnueabihf-g++ )
第二步:在opencv目录下新建build目录,进入build目录,执行命令:
#cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/arm-gnueabi.toolchain.cmake ../
这时,要保证出现:
第三步:使用cmake-gui打开CMakeCache.txt,去掉所有的无关项,修改CMAKE_INSTALL_PREFIX,来确定make install的目录
第四步:#sudo make
#sudo make install
可能出现的错误:
opencv编译不通过,出现skip之类的,说明ffmpeg没编译好,或者其编译好了,但是pkg-config没有设置好,一定要设置好其环境
前边几步不通过的话,看看命令有没有少,或者有没有修改好makefile
在arm上使用时,一种方法时直接将编译好的opencv目录下的lib文件拷贝到开发板对应的/lib目录下,其他或者拷贝到自己指定的目录,并设置好环境变量即可使用
㈦ opencv 交叉编译是什么意思
首先你已经安装了交叉编译工具链,比如说自己安装了gcc-linaro-arm-linux-gnueabihf-4.8-2013.10_linux工具
然后cmake用的是cmake-3.4.1-Linux-i386.tar.gz版本,其实这个只需在linux中解压即可,需要用cmake-gui时,只需到bin目录下,sudo ./cmake-gui即可
打开cmake-gui之后,选择要编译的源文件和编译之后存放的路径
㈧ 交叉编译opencv 自动生成zlib吗
第一步,安装交叉编译工具arm-linux-gcc-4.3.2
xgy@ubuntu:~/toolchain$mkdir arm
xgy@ubuntu:~/toolchain$cd arm
xgy@ubuntu:~/toolchain/arm$tar xvf arm-linux-gcc-4.3.2
解压后,在当目录下会多一个usr目录,由于我不喜欢这目录太深,然后就执行如下命令:
xgy@ubuntu:~/toolchain/arm$cp -rv usr/local/* .
xgy@ubuntu:~/toolchain/arm$rm -rf usr
接下来设置环境变量PATH,执行命令如下:
xgy@ubuntu:~/toolchain/arm$cd
xgy@ubuntu:~$vi .bashrc
在.bashrc文件的最后加入:exportPATH=$PATH:/home/xgy/toolchain/arm/4.3.2/bin 保存退出(:wq)
xgy@ubuntu:~$source .bashrc //使刚设置的值生效
到此本来交叉编译工具就已经安装成功了的,可经过检查却发现下图中左列的arm-linux-g++,arm-linux-gcc是4.3.3版本的(用命令arm-linux-gcc -v 查看),而其它的确是版本的,4.3.2这是一个奇怪现象!
因为我曾试过用4.3.3版本的g++交叉编译opencv2.0总是出错如下:
在这里,我只好创建软链接,使它指向右侧的arm-none-linux-gnueabi-g++,arm-none-linux-gnueabi-gcc。在创建之前先对原来的两个文件做备份。执行命令如下:
在这里再次检查下arm-linux-gcc及arm-linux-g++的版本
命令arm-linux-gcc –v 输出的最后一行是应该是:gcc version 4.3.2 (Sourcery G++ Lite 2008q3-72)在这里说明下,这个很重要:现在所用的arm-linux-gcc实际上使用的是~./toolchain/arm/4.3.2/bin/目录下的arm-none-linux-gnueabi-gcc,而它的include为arm/4.3.2/arm-none-linux-gnueabi/include,对应的lib为arm/4.3.2/arm-none-linux-gnueabi/lib,也就是说,你如果用arm-linux-gcc编译程译的话,对头文件它缺省的就找arm/4.3.2/arm-none-linux-gnueabi/include,对库它缺省的就找 arm/4.3.2/arm-none-linux-gnueabi/lib,而不是/usr/include /usr/lib,所以如果你要加什么.h .a .so文件的话,记着一定要把这些文件加到这两个目录下去,不然这个交叉编译器会告你找不到所要的库或头文件。这里的原理对于其它交叉编译器也适应(主要指目录结构),只是可能目录名不一样。
OK,到此,交编译器安装成功!
2012-11-2 今天换了一个4.3.2版本的arm-linux-gcc没有发现上面的问题,也许是我以前在复制的时候出错了,用cp命令时最好使用-a选项。
由于opencv2.0依懒于zlib,png、jpeg图形库而我们的arm-linux-gcc 是不带这些库的,它只带了一些基本的库,所以这里我们首先就要交叉编译这些文件,安装到arm/4.3.2/arm-none-linux-gnueabi/include,arm/4.3.2/arm-none-linux-gnueabi/lib目录中。库不一定要最新的,库的版本太新了,opencv有可能不认识。
首先安装zlib库,这个是后面两个库的编译基础。
xgy@ubuntu:~/tmp$ tar zxvf zlib-1.2.3.tar.gz
在当前目录下会多一个zlib-1.2.3的目录。
由于 zlib 库的configure 脚本不支持交叉编译选项,只好自己手动临时把 gcc 修改成指向我们的交叉编译器 arm-linux-gcc 。执行如下命令:
xgy@ubuntu:~/tmp$ cd /usr/bin
xgy@ubuntu:/usr/bin$ sudo –i //这里得切换到root用户下才能有权限做下面的操作。
[sudo] password for xgy: //在这里输入xgy用户的密码
root@ubuntu:~# cd /usr/bin
root@ubuntu:/usr/bin# mv gcc gcc_back
root@ubuntu:/usr/bin# mv ld ld_back
root@ubuntu:/usr/bin# ln -sv/home/xgy/toolchain/arm/4.3.2/bin/arm-linux-gcc ./gcc
root@ubuntu:/usr/bin# ln -sv/home/xgy/toolchain/arm/4.3.2/bin/arm-linux-ld ./ld
下面检查下是否换过来了
root@ubuntu:/usr/bin#gcc –v
gcc version4.3.2 (Sourcery G++ Lite 2008q3-72) //为输出的最后一行
root@ubuntu:/usr/bin#ld -v
GNU ld (SourceryG++ Lite 2008q3-72) 2.18.50.20080215
接着切换到原来的目录~/tmp/zlib-1.2.3执行如下命令
root@ubuntu:/usr/bin#su – xgy //注意这里和用命令 suxgy是有区别的,-表示用xgy的环境
xgy@ubuntu:~$ cdtmp/zlib-1.2.3/
xgy@ubuntu:~/tmp/zlib-1.2.3$./configure --prefix=/home/xgy/toolchain/arm/4.3.2/arm-none-linux-gnueabi/--shared
xgy@ubuntu:~/tmp/zlib-1.2.3$make (如果以前在这个目录下执行过make ,那要先执行makeclean 然后执行make)
xgy@ubuntu:~/tmp/zlib-1.2.3$make install
然后可以去~/toolchain/arm/4.3.2/arm-none-linux-gnueabi/{include,lib}目录下是否多了一些文件(可以另外再开一个终端查看,这样方便点),如下图:
在这里记着把刚才改过的gcc再改回去,不然后面会出错!!!
接下来安装png库,这个是用来显示png图形的。
xgy@ubuntu:~/tmp$tar jxvf libpng-1.2.18.tar.bz2
xgy@ubuntu:~/tmp$cd libpng-1.2.18/
由于libpng不提供有效的configure脚本(可以查看INSTALL文件),所以只好自己动手改Makefile文件了。
xgy@ubuntu:~/tmp/libpng-1.2.18$cp scripts/makefile.linux Makefile
xgy@ubuntu:~/tmp/libpng-1.2.18$vi Makefile
CC=arm-linux-gcc //修改这里
MKDIR_P=mkdir -p
# where "make install" putslibpng12.a, libpng12.so*,
# libpng12/png.h and libpng12/pngconf.h
# Prefix must be a full pathname.
prefix=/home/xgy/toolchain/arm/4.3.2/arm-none-linux-gnueabi
exec_prefix=$(prefix)
# Where the zlib library and include filesare located.
#ZLIBLIB=/usr/local/lib
#ZLIBINC=/usr/local/include
ZLIBLIB=/home/xgy/toolchain/arm/4.3.2/arm/arm-none-linux-gnueabi/lib //修改这里
ZLIBINC=/home/xgy/toolchain/arm/4.3.2/arm/arm-none-linux-gnueabi/include//修改这里
保存退出后执行如下命令:
xgy@ubuntu:~/tmp/libpng-1.2.18$ make
xgy@ubuntu:~/tmp/libpng-1.2.18$ makeinstall
然后可以去~/toolchain/arm/4.3.2/arm-none-linux-gnueabi/{include,lib}目录下是否多了一些文件(可以另外再开一个终端查看,这样方便点),如下图:
如果有错,检查下前面的步聚,特别是看zlib有安装有没有出错。
接下来安装jpeg库
xgy@ubuntu:~/tmp/libpng-1.2.18$ cd ..
xgy@ubuntu:~/tmp$tar zxvf jpegsrc.v6b.tar.gz
xgy@ubuntu:~/tmp/jpeg-6b$
xgy@ubuntu:~/tmp/jpeg-6b$ ./configure --prefix=/home/xgy/toolchain/arm/4.3.2/arm-none-linux-gnueabi/--host=arm-linux --enable-shared
按此命令进行,然后修 改makefile文件将CC的值改为arm-linux-gcc,一定得改!!
xgy@ubuntu:~/tmp/jpeg-6b$make
安装前需要在 arm-linux 下建个目录,不然安装会出错
xgy@ubuntu:~/tmp/jpeg-6b$mkdir -pv /home/xgy/toolchain/arm/4.3.2/arm-none-linux-gnueabi/man/man1
mkdir: created directory `/home/xgy/toolchain/arm/4.3.2/arm-none-linux-gnueabi/man/man1
xgy@ubuntu:~/tmp/jpeg-6b$ make install
然后可以去~/toolchain/arm/4.3.2/arm-none-linux-gnueabi/{include, lib}目录下是否多了一些文件(可以另外再开一个终端查看,这样方便点),如下图:
到此,三个库安装完毕!