交叉编译Opencv2.4.9完全实录
2017-05-05 19:34
357 查看
1.编译环境及库文件
linux环境:ubuntu14.04交叉编译工具 gcc-arm-linux-gnueabi
安装
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install g++-arm-linux-gnueabi
2.使用cmake-gui配置
以下配置非常关键!!!!点config
Compilers选项中的C选择*-gcc
C++选择*-g++,要找到交叉编译工具链所在位置。
find program include
编译工具的库函数(lib)的位置
点Advanced
接下来是终极配置!!不按照以下配置必然会报错!!
去掉BUILD_OPENEXR
去掉BUILD_opencv_ocl
去掉WITH_1394
去掉WITH_CUDA
去掉WITH_GSTREAMER(没见到)
去掉WITH_GTK(没见到)
去掉WITH_LIBV4L(后边有v4l这个没用不要选)(没见到)
去掉WITH_OPENCL
去掉WITH_OPENEXR
去掉WITH_TIFF
在cmake-gui中去掉BUILD_opencv_apps这一项的钩钩!!!
勾上BUILD_JASPER
勾上BUILD_JPEG
勾上BUILD_PNG
勾上BUILD_ZLIB
CMAKE_C_FLAGS 设置为-O3 -fPIC
CMAKE_CXX_FLAGS 设置为-O3 -fPIC
CMAKE_MODULE_LINKER_FLAGS:STRING=-pthread -lrt -ldl
CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -lrt
//注意,有些系统是如下配置,反正我的ubuntu14.04只能是使用上面的配置
(CMAKE_MODULE_LINKER_FLAGS:STRING=-lpthread -lrt
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
-lpthread都改为-pthread)
3.编译和安装
配置好后点generatemake
或者make -j8(八线程哦,快很多)
make install
4.常见错误提示及解决方法
(1)错误1Linking CXX shared library ../../lib/libopencv_core.so
/opt/EmbedSky/4.4.6/lib/gcc/arm-embedsky-linux-gnueabi/4.4.6/../../../../arm-embedsky-linux-gnueabi/bin/ld: ../../3rdparty/lib/libzlib.a(inflate.c.obj): relocation R_ARM_MOVW_ABS_NC against `a local symbol’ can not be used when making a shared object; recompile with -fPIC
../../3rdparty/lib/libzlib.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: * [lib/libopencv_core.so] 错误 1
make[1]: * [modules/core/CMakeFiles/opencv_core.dir/all] 错误 2
解决方法1:
http://ask.csdn.net/questions/70191
最佳方法:
在cmake-gui 中配置
CMAKE_C_FLAGS 设置为-O3 -fPIC
CMAKE_CXX_FLAGS 设置为-O3 -fPIC
(2)错误2
../../lib/libopencv_core.so:对‘pthread_spin_init’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_unlock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_key_create’未定义的引用
../../lib/libopencv_core.so:对‘pthread_getspecific’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_lock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_destroy’未定义的引用
../../lib/libopencv_core.so:对‘pthread_once’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_trylock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_setspecific’未定义的引用
解决方法:
CMAKE_MODULE_LINKER_FLAGS:STRING=-pthread -lrt -ldl
CMAKE_EXE_LINKER_FLAGS:STRING=-pthread -lrt
//注意,有些系统是如下配置,反正我的ubuntu14.04只能是使用上面的配置
(CMAKE_MODULE_LINKER_FLAGS:STRING=-lpthread -lrt
CMAKE_EXE_LINKER_FLAGS:STRING=-lpthread -lrt
-lpthread都改为-pthread)
错误3
Linking CXX executable ../../bin/opencv_createsamples
../../lib/libopencv_core.so:对‘pthread_spin_init’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_unlock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_key_create’未定义的引用
../../lib/libopencv_core.so:对‘pthread_getspecific’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_lock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_destroy’未定义的引用
../../lib/libopencv_core.so:对‘pthread_once’未定义的引用
../../lib/libopencv_core.so:对‘pthread_spin_trylock’未定义的引用
../../lib/libopencv_core.so:对‘pthread_setspecific’未定义的引用
collect2: error: ld returned 1 exit status
make[2]: * [bin/opencv_createsamples] 错误 1
make[1]: * [apps/haartraining/CMakeFiles/opencv_createsamples.dir/all] 错误 2
make: * [all] 错误 2
尝试解决
google之
http://stackoverflow.com/questions/40246165/linking-issue-in-opencv-createsamples
使用以上解决方法
直接
make
然后
make clean
不行!!!!
提示假如不用可以不编译
Alternatively for you to continue you could disable building that if you are not using it.
终极解决方法!!
不编译这个apps模块!
在cmake-gui中去掉BUILD_opencv_apps这一项的钩钩!!!
相关文章推荐
- 交叉编译OpenCV2.4.9
- linux zynq opencv 2.4.9 交叉编译
- Opencv2.4.9交叉编译
- 海思3515,交叉编译opencv2.4.9,个人经验分享,欢迎补充
- opencv2.4.9交叉编译
- Opencv2.4.9交叉编译
- Ubuntu 14.04 LTS下使用arm-linux-gcc交叉编译OpenCV 2.4.9
- Ubuntu14.04 Opencv2.4.9交叉编译
- 海思3515,交叉编译opencv2.4.9
- 解决VS2012编译OpenCV2.4.9,error C3859
- Win7下qt5.3.1+opencv2.4.9编译环境的搭建
- Ubuntu下OpenCV 2.4.3交叉编译
- lib_clapack.a(dlasyf.o): could not read symbols: File in wrong format---- 交叉编译opencv2.0遇到的错误解决
- QT5.3.2 + OpenCV2.4.9 编译好的库文件,写文章留作纪念
- linux下交叉编译libjpeg与opencv1.0
- Qt5.4.2Mingw编译配置opencv2.4.9
- Opencv交叉编译到ARM(基于Qt)
- Ubuntu13.10下编译安装opencv2.4.9
- ubuntu14.04上交叉编译opencv-2.4.9
- qt5.3.1+opencv2.4.9编译环境的搭建