OpenCV中文网站

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

arm-linux编译opencv 遇到问题,请大家帮帮忙

[复制链接]
发表于 2009-3-27 13:59:27 | 显示全部楼层 |阅读模式
1.  ./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/include
通过没有出现错误
2.make
...
/usr/include/bits/mathinline.h: 540 :unknown register name 'st(1)' in `asm`
make[3]:**[cxalloc.lo]error1
make[3]:leaving diretory `/root/opencv/cxcore.src`
make[2]:***[all-recursive]error1
make[2]leaving diretory `/root/opencv/cxcore
make[1]:***[all-recursive]error1
make[1]:leaving diretory `/root/opencv
我的编译器是2.95.3的,系统是redhat9,用的是opencv 1.0 版本的,参考了论坛上的其他例子,没有收获,请大家帮忙看看,会是什么问题呢
回复

使用道具 举报

 楼主| 发表于 2009-3-27 19:09:10 | 显示全部楼层

arm-linux编译opencv 遇到问题,请大家帮帮忙

似乎大家没遇到过这个问题,我想换个编译工具试试,谁有2.95.2或2.95.3的arm-linux-gcc,能不能给传一份?
    邮箱:tan584@nenu.edu.cn QQ:303710764
回复 支持 反对

使用道具 举报

发表于 2009-3-27 20:11:18 | 显示全部楼层

arm-linux编译opencv 遇到问题,请大家帮帮忙

你这个问题,初步判断跟编译器版本关系不大,主要问题在于,你的configure命令中带了这个参数CPPFLAGS=-I/usr/include,这个选项会将/usr/include也加入到你的头文件搜索路径中。

这里,你要搞清楚一个概念:
1、所谓交叉编译,就是在host体系架构上编译target体系架构下的目标程序
2、因此,你的交叉编译器的头文件和库文件搜索路径,都应该指定为目标平台的头文件和库文件搜索路径
3、显然,/usr/include下都是host系统的头文件,当然会存在寄存器或指令不兼容的情况

举个具体的例子,同样是mathinline.h,其中实现了一些常用算术运算的内联实现,为了效率,可能用到了汇编指令,而X86和ARM的汇编指令当然不同,因此X86有X86的mathinline.h,而ARM有ARM的mathinline.h。但你现在编译arm程序时,却指定包含的mathinline.h来自于/usr/include,即X86(也就是你的当前操作系统路径)平台,那当然会不兼容了。

所以,你应该正确指定目标平台的头文件和库文件搜索路径,比如编译器中内置的头文件和库文件、目标操作系统的头文件和库文件,至于目标操作系统的头文件和库文件,是需要你安装(其实就是copy)到你的host系统下的某个路径里,然后通过configure参数来指定的。
似乎大家没遇到过这个问题,我想换个编译工具试试,谁有2.95.2或2.95.3的arm-linux-gcc,能不能给传一份?
    邮箱:tan584@nenu.edu.cn QQ:303710764
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-3-27 21:18:27 | 显示全部楼层

arm-linux编译opencv 遇到问题,请大家帮帮忙

谢谢了,问题解决了,但貌似运行时仍有问题...
    基础知识不牢固,慢慢补
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-4-4 12:10:58 | 显示全部楼层

arm-linux编译opencv 遇到问题,请大家帮帮忙

1.我将opencv的头文件和库文件都拷贝到了/usr/local/arm/2.95.3/arm-linux/lib-opencv中
2../configure=
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
请大家帮忙看看,我哪里出错了,库文件路径拿不准,已经换了几个地方了,错误都是这样的。
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|OpenCV中文网站

GMT+8, 2024-3-29 07:50 , Processed in 0.010783 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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