关闭

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

649人阅读 评论(0) 收藏 举报
分类:

实际上这里说的是移植的第一步,下载到源码后,我用的是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




0
0
查看评论

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

问题描述: 这个实际上是最后一部的问题,将生成的共享库文件放入到了/usr/local/opencv-arm/lib下,并且设置了LD_LIBRARY_PATH中为/usr/local/opencv-arm/lib,动态链接库的一个搜索路径。程序终于可以跑起来了,但是却输出了下面的问题: ...
  • LG1259156776
  • LG1259156776
  • 2016-08-28 19:24
  • 1772

OpenCV在Ubuntu和Linux系统下的移植

1安装cmake-qt-gui:sodo apt-get install cmake-qt-gui 2. 配置cmake: 进入存放opencv2.4.10的文件夹,输入cmake-gui。进入如下界面,点击configure,选择最后一个,下一步 Finish之后勾选 ...
  • qq_31359953
  • qq_31359953
  • 2016-03-31 10:36
  • 806

OpenCV2.4.13 ARM版移植过程记录

移植OpenCV2.4.13库到嵌入式开发板,根据实际运行环境编译出合适的库文件
  • TongxinV
  • TongxinV
  • 2017-05-28 09:29
  • 989

Linux下安装opencv并移植至ARM

目的:OpenCV是Intel支持的开源计算机视觉库。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法。它不依赖于其它的外部库—尽管也可以使用某些外部库。OpenCV使用BSD License,对非商业应用和商业应用都可以免费使用。OpenCV的主要应用环境是Wind...
  • sinat_26551021
  • sinat_26551021
  • 2016-11-24 22:25
  • 2141

【Linux开发】OpenCV在ARM上的移植

与X86 Linux类似,请参考: Linux 下编译安装OpenCV 本文在此基础上进行进一步操作。 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方法很麻烦,不仔细操作很容易出错,我的方法是尽可能的利用现成的工具,尽量图形化界面配置操作,方便编译配置...
  • LG1259156776
  • LG1259156776
  • 2016-08-28 12:27
  • 1363

opencv移植到arm开发板

1.opencv移植到arm开发板的过程 2.Libv4l2的移植
  • cjj1130320082
  • cjj1130320082
  • 2016-07-20 20:54
  • 2573

OpenCV学习笔记(四)—— OpenCV for Android移植到Android平台

如今,大部分的AR都是基于移动设备的,所以这里我们尝试在Android中调用OpenCV的功能来做一些相关的测试。由于OpenCV是基于C语言和部分C++语言开发的,而Android开发使用的则是Java,那么如何才能在Java中调用OpenCV库中的类或者代码呢?这就需要借助于JNI了,不过在使用...
  • linshuhe1
  • linshuhe1
  • 2016-04-20 12:11
  • 5001

x264 利用arm-linux-gcc在arm上的移植 总结

我的移植源文件http://download.csdn.net/detail/kaly_liu/4796426   PC 平台:Linux fedora10—编译器4.3.3 arm-linux-gcc X264源码:Last_x264http://www.videolan.org/...
  • kaly_liu
  • kaly_liu
  • 2012-11-28 16:01
  • 2247

Opencv移植到安卓平台

OpenCV于1999年由Intel 建立,全称:OpenSource Computer Vision Library。 OpenCV是一个跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++类构成,同时提供了Pyt...
  • xiewenhao12
  • xiewenhao12
  • 2017-03-22 11:06
  • 374

opencv2.0移植到ARM

opencv20移植到arm 背景 第一次移植 第二次arm移植 遇到的几个问题测试成功样例opencv2.0移植到arm背景最近做实验需要将opencv移植到arm平台。刚开始也是一头雾水啊。之前学的opencv都是opencv2.4.7以后的。再写测试程序的时候也遇到了一些问题。后面会写到。但是...
  • xiaoxiaodongshige
  • xiaoxiaodongshige
  • 2016-07-11 20:22
  • 1002
    个人资料
    • 访问:1907344次
    • 积分:22301
    • 等级:
    • 排名:第390名
    • 原创:271篇
    • 转载:946篇
    • 译文:3篇
    • 评论:192条
    博客专栏
    最新评论