【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题2---CMAKE配置问题

原创 2016年08月28日 19:37:59

实际上这里说的是移植的第一步,下载到源码后,我用的是opencv2.4.9,解压缩,然后可以利用cmake-gui来进行configure配置,这里面需要设置交叉编译的工具链,具体的可以参考【Linux开发】OpenCV在ARM上的移植


这里面的几个问题:

没有路径的可以设置选择No,不要选他。

除了前面列的那篇文中所提到的,要修改CMakeCache.txt中的那个CMAKE_EXE_LINKER_FLAGS=-lpthread -lrt,还有一个特别要命的问题就是:

Linking 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
make: *** [all] 错误 2

解决方法:

进入opencv目录下的3rdparty的对应目录CMakeFiles/ *.dir下,打开flags.make,在C_FLAGS = 后添加-O3 -fPIC用来支持在64位机上编译
如../3rdparty/zlib/CMakeFiles/zlib.dir/flags.make
修改C_FLAGS =  -W -Wall 为 C_FLAGS =  -O3 -fPIC  -W -Wall
和修改CXX_FLAGS =  -W -Wall 为 C_FLAGS =  -O3 -fPIC  -W -Wall

好像得对应到每一个出错的路径下进行修改(多个都出现这种问题的话)。

编译一个能在 arm 平台上用的动态库,结果报错如下:
relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
./obj/xxx.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status

其实错误信息已经给出解决办法了,加 -fPIC 参数从新编译(recompile with -fPIC)
所以如果是命令行,直接添加 -fPIC
如果是Makefile,添加编译选项:CFLAGS  +=  -fPIC
Done !
好像还是64bit操作系统的问题吧?

------------------

2016-8-28 19:37

张朋艺 pyZhangBIT2010@126.com




版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/lg1259156776/。 举报

相关文章推荐

ubuntu14.04的error while loading shared libraries: libz.so.1问题

原文地址: http://snailszzy.blog.163.com/blog/static/9439909320145954030703/ /opt/EmbedSky/4.4.6/lib/g...

ubuntu14.04的error while loading shared libraries: libz.so.1问题

原文地址: http://snailszzy.blog.163.com/blog/static/9439909320145954030703/ /opt/EmbedSky/4.4.6/lib/g...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

交叉编译Opencv2.4.9完全实录

交叉编译opencv

【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4---共享库中嵌套库带路径【已解决】

【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题4—共享库中嵌套库带路径【已解决】标签:【Linux开发】紧接着上一篇,我居然又尝试了一下编译opencv,主要是因为由于交叉编...

【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题1---cvNamedWindow调用报错的问题

问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/open...

OpenCV在ARM-linux上的移植过程遇到的问题3---共享库中嵌套库居然带路径【未解决】

【Linux开发】OpenCV在ARM-linux上的移植过程遇到的问题3—共享库中嵌套库居然带路径【未解决】标签(空格分隔): 【Linux开发】移植opencv到tq2440一、下载opencv及...

Linux OpenCV移植过程详细介绍【FFMPEG编译问题全程解决】

【原文:http://blog.csdn.net/wc7620awjh/article/details/8268447】 编译环境fedora9.0 xvid版本:xvidcore-1...

tiny6410配置linux开发环境问题解决办法

1. 插上usb-to-can电缆后无任何反应   解决办法:文档说明用nor flash方式启动,没有反应;改成sdboot启动即解决问题。 2.插上usb-to-can电缆后显示无法识别设备...

Linux开发心得总结2 - 频繁分配释放内存导致的性能问题的分析

现象 1 压力测试过程中,发现被测对象性能不够理想,具体表现为: 进程的系统态CPU消耗20,用户态CPU消耗10,系统idle大约70 2 用ps -o majflt,minflt -C pr...

Linux开发二十三_opencv移植

opencv是一个开放源代码的机器视觉库,它是基于c/c++开发的,可用与计算机视觉、图像处理、模式识别和跟踪等等。
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)