opencv 2.4.12 移植到 arm 详细教程
opencv2.4.12
ubuntu12.04
GCC 4.3.2
1.首先下载编译器,解压,设置环境变量,完成后,在终端
输入 arm 后按 Tab 键,若出现 arm 的相关的内容,则表示配
置正确;
参考:http://blog.csdn.net/luotuo44/article/details/8958990
2.下载 cmake,
sudo apt-get install cmake-gui
3.完成以上两步后,现在来进行编译。网上的教程说的很详
细了,这里只提几点问题:
onion31s@ubuntu:~/ cmake-gui
在 cmake 界面中进行配置
第一步:
// 启动 cmake
第二步:
第三步:
第四步:
第五步:
4.按照上述配置完成后,进入下图划红线的目录(进入自己
配置的目录)
cd /home/onion31s/A31s_Source_lib/opencv_build
onion31s@ubuntu:~/
onion31s@ubuntu:~/ make
鉴于网上的参考教程,大多数人这里会报错,这里将错误总结如下:
(1)报错:
Linking CXX executable ../../bin/opencv_test_calib3d
../../lib/libopencv_core.so:
`pthread_key_create'
../../lib/libopencv_core.so:
`pthread_getspecific'
....................
undefined
undefined
reference
reference
to
to
collect2: ld returned 1 exit status
make[2]: *** [bin/opencv_test_calib3d] Error 1
make[1]:
[modules/calib3d/CMakeFiles/opencv_test_calib3d.dir/all]
Error 2
make: *** [all] Error 2
***
或者
报错:undefined reference
undefined reference
to “dlopen”
to “dlysm”
解决方案:修改
目录下的 CMakeCache.txt,CMAKE_EXE_LINKER_FLAGS 原来为
空,保险起见,加上-lpthread -lrt -ldl,如下图:
compiler error:in
(2)报错:......xxx.cpp internal
vect_transform_stmt ,at tree-vect-stmts.c.....
解决方案:这是编译器的 Bug 建议换个低版本的编译器重新
操作;
(3)报错:“......could not read symbols:bad value”
解决方案:进入 cd
/home/onion31s/A31s_Source_lib/opencv_build/3rdparty/zlib/CMakeFiles/Zlib.dir/f
lags.make
将 C_FLAGS= -w -Wall 替换成 C_FLAGS=-03 -fPIC -w -Wall
5.报错按照上述方法解决,再 make 后,执行 sudo make
install ,此时编译好的库就按照在你指定的目录下了.
6.进入上述的安装库,若没有取消 BUILD_SHARED_LI 选项,
则生产的是.so 后缀的库文件,将这些库文件拷贝到板子的
/lib 目录下。
7.在 Ubuntu 上编译的时候,编译指令如下:
其中的路径对应到你安装库文件的路径。
8.如果你是静态编译,将上述命令中的.so 库文件替换成.a 库
文件,再在指令最后添加 -static,这样你无须拷贝任何库
文件到板子上,直接编译后拷贝编译后的文件在板子上直接
即可运行。
现在你的板子上可以跑 opencv 写的程序了。