版本说明:
OS:ubuntu12.04 64bit
Opencv:2.4.8
目标:
在ubuntu12.04 64位操作系统上运行32位opencv。
问题:
在64位ubuntu上编译opencv得到的时64位版的。网上找了很多方法都没解决。
解决办法:
在ubuntu12.04 32位版本上编辑opencv,然后将编译后的文件拷贝到64位ubuntu上运行。缺少的32位依赖包可以通过getlibs工具下载安装。
具体步骤:
1、32位ubuntu 上编译opencv
1、安装依赖包:
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev cmake libswscale-dev libjasper-dev
2、然后下载openCV的源码包并解压出来,进入解压出来的目录
cd ~/opencv
mkdir release
cd release
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..然后安装
make
sudo make install
3、安装完毕后,会在/usr/local/bin和/usr/local/lib目录下出现如下文件
hadoop@ubuntu32bit:/$ ll /usr/local/bin/
total 688
drwxr-xr-x 2 root root 4096 Apr 3 16:25 ./
drwxr-xr-x 10 root root 4096 Apr 3 14:13 ../
-rwxr-xr-x 1 root root 200738 Apr 3 16:23 opencv_createsamples*
-rwxr-xr-x 1 root root 200700 Apr 3 16:23 opencv_haartraining*
-rwxr-xr-x 1 root root 16961 Apr 3 16:23 opencv_performance*
-rwxr-xr-x 1 root root 268920 Apr 3 16:23 opencv_traincascade*
hadoop@ubuntu32bit:/$ ls /usr/local/lib/
libopencv_calib3d.so libopencv_gpu.so libopencv_nonfree.so libopencv_superres.so
libopencv_calib3d.so.2.4 libopencv_gpu.so.2.4 libopencv_nonfree.so.2.4 libopencv_superres.so.2.4
libopencv_calib3d.so.2.4.8 libopencv_gpu.so.2.4.8 libopencv_nonfree.so.2.4.8 libopencv_superres.so.2.4.8
libopencv_contrib.so libopencv_highgui.so libopencv_objdetect.so libopencv_ts.a
libopencv_contrib.so.2.4 libopencv_highgui.so.2.4 libopencv_objdetect.so.2.4 libopencv_video.so
libopencv_contrib.so.2.4.8 libopencv_highgui.so.2.4.8 libopencv_objdetect.so.2.4.8 libopencv_video.so.2.4
libopencv_core.so libopencv_imgproc.so libopencv_ocl.so libopencv_video.so.2.4.8
libopencv_core.so.2.4 libopencv_imgproc.so.2.4 libopencv_ocl.so.2.4 libopencv_videostab.so
libopencv_core.so.2.4.8 libopencv_imgproc.so.2.4.8 libopencv_ocl.so.2.4.8 libopencv_videostab.so.2.4
libopencv_features2d.so libopencv_legacy.so libopencv_photo.so libopencv_videostab.so.2.4.8
libopencv_features2d.so.2.4 libopencv_legacy.so.2.4 libopencv_photo.so.2.4 pkgconfig
libopencv_features2d.so.2.4.8 libopencv_legacy.so.2.4.8 libopencv_photo.so.2.4.8 python2.7
libopencv_flann.so libopencv_ml.so libopencv_stitching.so
libopencv_flann.so.2.4 libopencv_ml.so.2.4 libopencv_stitching.so.2.4
libopencv_flann.so.2.4.8 libopencv_ml.so.2.4.8 libopencv_stitching.so.2.4.8
<!--[endif]-->
4、将opencv的可执行文件和库文件备份。
sudo mkdir opencv-2.4.8-i386
sudo mkdir opencv-2.4.8-i386/bin
sudo mkdir opencv-2.4.8-i386/lib
sudo cp /usr/local/bin/opencv* opencv-2.4.8-i386/bin
sudo cp /usr/local/lib/libopencv* opencv-2.4.8-i386/lib
5、将opencv-2.4.8-i386拷贝到64位ubuntu环境下。
2、64位ubuntu下部署32位软件
1、在ubuntu64位环境下安装32位兼容环境和getlibs
apt-get install ia32-libs getlibs
2、通过getlibs下载opencv依赖的32位库文件
sudo getlibs -p libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev libswscale-dev libjasper-dev
然后依赖的库文件加入到系统共享中
sudo vi /etc/ld.conf.
include /etc/ld.so.conf.d/*.conf
/usr/lib32/i386-linux-gnu/
sudo ldconfig
3、sudo getlibs opencv_createsamples
hadoop@ubuntu05:~/bin$ sudo getlibs opencv_createsamples
Reading package lists... Done
Building dependency tree
Reading state information... Done
ia32-libs is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 54 not upgraded.
libvpx.so.1: libvpx1
libschroedinger-1.0.so.0: libschroedinger-1.0-0
libopenjpeg.so.2: libopenjpeg2
libgsm.so.1: libgsm1
libdirac_encoder.so.0: libdirac-encoder0
The following i386 packages will be installed:
libdirac-encoder0
libgsm1
libopenjpeg2
libschroedinger-1.0-0
libvpx1
Continue [Y/n]?
4、等在依赖的库下载完毕后,将动态库加入系统共享中
sudo vi /etc/ld.conf.
include /etc/ld.so.conf.d/*.conf
/usr/lib32/i386-linux-gnu/
/usr/lib32
sudo ldconfig
至此64位ubuntu 上运行32位opencv的环境依赖库安装完毕。
5、部署32位opencv
sudo cp opencv-2.4.8-i386/bin/* /usr/local/bin
sudo cp –r opencv-2.4.8-i386/lib /usr/local/lib/openvc
sudo vi /etc/ld.so.conf 增加如下内容
/usr/local/lib/opencv
sudo ldconfig