OpenCV中文网站

 找回密码
 立即注册
搜索
热搜: 安装 配置
查看: 8104|回复: 9

再问arm-linux编译opencv时遇到的问题

[复制链接]
发表于 2009-4-4 18:25:49 | 显示全部楼层 |阅读模式
首先非常感谢bingpo之前的回答,现在我又遇到了一个问题,自己弄了几天也没有解决,请大家帮忙看看,我的操作步骤如下:
1.我将opencv的头文件和库文件都拷贝到了/usr/local/arm/2.95.3/arm-linux/lib-opencv中
2./configure --host=arm-linux --without-gtk --without-carbon --without-v41 --without-quicktime --without-1394libs --without-python --without-swig --enable-static --disable-shared --disable-apps     CXX=arm-linux-g++
CPPFLAGS=-I/usr/local/arm/2.95.3/arm-linux/lib-opencv
3. make,make install
通过。但在编译程序时出现以下错误
4. arm-linux-gcc   -I/usr/local/arm/2.95.3/arm-linux/lib-opencv/include/opencv -o dft dft.c   -L/usr/local/arm/2.95.3/arm-linux/lib-opencv/lib -lhighgui -lcv -lcxcore -lcvaux -lpthread -lm
之后提示我
/usr/local/arm/2.95.3/arm-linux/lib-opencv/include/opencv/cxtypes.h:150:warning:redefinition of `ushort`
/usr/local/arm/2.95.3/libs/gcc-lib/arm-linux/2.95.3...../arm-linux/include/sys/types.h:145:warning:`ushort `previously declared here
/usr/local/arm/2.95.3/arm-linux/lib-opencv/lib/libhighgui.so:could not read symbols :invalid operation
collect2:ld returned 1 exit status
请大家帮忙看看,我哪里出错了,库文件路径拿不准,已经换了几个地方了,错误都是这样的
回复

使用道具 举报

发表于 2009-4-4 22:33:50 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

ushort被重复定义,cxtypes.h和ARM的types.h都定义了ushort,你把cxtypes.h的第150行注释掉应该可以解决这个问题。

这个错误:
libhighgui.so:could not read symbols :invalid operation

我怀疑你make的时候并没有成功生成libhighgui.so,你仔细看看make的结果,有没有出错信息。
另外,如果你自己写个V4L协议的视频采集,是没有必要使用highgui的,可以只使用cxcore和cv两部分。

另外,如果你在ARM上做人脸检测,且ARM无硬件浮点运算辅助的话,强烈建议你将人脸检测算法改成定点算法。浮点算法的时间会是定点的几十倍。
回复 支持 反对

使用道具 举报

发表于 2009-4-4 23:12:46 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

那个ushort的warning我就不说了,小事情。

libhighgui.so:could not read symbols :invalid operation,从错误提示来看,应该是已经找到libhighgui.so了,所以你不用再把路径换来换去的,我觉得更有可能是你生成的libhighgui.so的格式不对,比如目标平台、字节序等。

你先执行下这条命令看看结果:
  1. [root@localhost bin]# file /usr/local/arm/2.95.3/arm-linux/lib-opencv/lib/libhighgui.so
  2. /usr/local/arm/2.95.3/arm-linux/lib-opencv/lib/libhighgui.so: ELF 32-bit LSB executable, ARM, version 1 (ARM), for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
复制代码

注意上面的三个地方:
1、是否ELF格式
2、是否ARM版本
3、是LSB还是MSB,这决定了这个动态库的字节序

因为你configure的时候,没有指定prefix参数,所以make install的时候,缺省是被安装到/usr/local下面去了,至于你说你拷贝了,我不知道拷贝的对不对,所以一定要用上面的file命令确认一下文件格式。

如果只是ARM版本的库错拷成了PC版本的,那好办,找到正确的库,拷过去即可。
如果是字节序不对,那就比较麻烦,根据你file的结果,如果是LSB,那么编译程序的时候gcc要加上-mlittle-endian,如果是MSB,则要加上-mbig-endian。
我觉得,前者的可能性比较大,因为你没有prefix,所以缺省安装到/usr/local下,拷贝的时候可能拷错了版本。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-5 07:49:33 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

谢谢两位的帮助,感到非常荣幸。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-9 21:21:38 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

真是不好意思,做点东西总要问大家...
    我编译都通过了,也生成了可执行文件,为什么运行时无反应,连错误信息都没有?运行时我用的是NFS方式在ARM上运行的
回复 支持 反对

使用道具 举报

发表于 2009-4-10 11:39:20 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

你要什么反映,HighGUI应该在ARM平台用不上吧,还是自己加点打印信息看看吧
真是不好意思,做点东西总要问大家...
    我编译都通过了,也生成了可执行文件,为什么运行时无反应,连错误信息都没有?运行时我用的是NFS方式在ARM上运行的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-10 20:00:45 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

谢谢,我再学学opencv
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-12 11:17:40 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

如果将编译好的库文件加入到arm文件系统的源码/usr/lib中,再生成新的文件系统,烧写进arm板上,arm是不是就可以支持highgui了呢?
回复 支持 反对

使用道具 举报

发表于 2009-4-12 15:12:53 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

highgui可能还会依赖其他一些更加底层的图形库。
另外,你的设备上需要有显示输出设备及相关驱动。
回复 支持 反对

使用道具 举报

发表于 2009-7-26 11:34:24 | 显示全部楼层

再问arm-linux编译opencv时遇到的问题

1.我将opencv的头文件和库文件都拷贝到了/usr/local/arm/2.95.3/arm-linux/lib-opencv中

不太明白上面这句话
opencv的库文件不正是要编译生成的么,又怎么把它拷贝到/usr/local/arm/2.95.3/arm-linux/lib-opencv中?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-4-17 03:46 , Processed in 0.009733 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表