关于opencv在arm上的移植问题
发布网友
发布时间:2022-04-12 12:57
我来回答
共4个回答
热心网友
时间:2022-04-12 14:27
ubuntu intrepid + arm-linux-gcc(2.95.3)
所使用的交叉编译器,似乎与编译器对 stl 的支持程序有关。
目前可知的是,openmoko 提供的编译器编译1.0.0及1.1.0均有问题。
1、编译opencv-1.0.0
$ cd opencv-1.0.0
$ mkdir build; cd build //这样处理是比较干净,也方便。
2.95.3对opencv-1.0.0正常,暂未发现问题。编译opencv-1.1.0则存在问题。
另,ELDK-4.2已经安装好,其支持都很是完整。另行测试。
1)配置(共享库及静态链接)
//共享库
$ ../configure --host=arm-linux --prefix=/home/goosen/visions/install --without-gtk --without-v4l --disable-apps
//静态编译
$ ../configure --host=arm-linux --prefix=/home/goosen/visions/install --without-gtk --without-v4l --disable-apps --enable-static --disable-shared
此处若配置target=arm-linux,并没有检测交叉编译器。因此选择配置--host=arm-linux-gcc 。
静态编译opencv成功,只是编译应用程序则出现大量的’undefined reference‘。
对于ffmpeg, v4l及gtk的支持。需要整理文档(基本步骤,碰到的问题及初步分析)。
2)编译(安装于~/visions/install/)
$ make; make install
$ ls ~/visions/install/ //opencv 安装于 --prefix所配置目录下
include lib share
2、设置环境变量及编译sample(c 源码)
1)编译例程
//opencv共享库,均正常。
//暂时无法实际测试,所使用的9200板子,未有LCD,另gtk未支持。
$ sh build_all.sh
$ file drawing
drawing: ELF 32-bit LSB executable, ARM, version 1, for GNU/Linux 2.0.0, dynamically linked (uses shared libs), not stripped
//编译 drawing.c(静态链接opencv)
$ arm-linux-g++ drawing.c -o drawing `pkg-config --cflags --libs opencv`
/home/goosen/visions/install/lib/libcxcore.a(cxerror.o):???'__static_initialization_and_destruction_0'?:
cxerror.o(.text+0x518): undefined reference to `pthread_key_create'
collect2: ld returned 1 exit status
修改/home/goosen/visions/install/lib/pkgconfig 下opencv.pc, 加编译参数 -lpthread
2)设置及修改。设置 PKG_CONFIG_PATH
$ export PKG_CONFIG_PATH=/home/goosen/visions/install/lib/pkgconfig
$ cd opencv-1.0.0/samples/c
修改build_all.sh
gcc -> arm-linux-gcc
g++ -> arm-linux-g++
//eldk的很好很强大,寻找时间进行进一步测试。
另,需要对ppp协议中的LCP协商部分,做更为深入的了解。
热心网友
时间:2022-04-12 15:45
PS 完全可以做到的
热心网友
时间:2022-04-12 17:19
可以从分析opencv库函数考虑,分析那些函数可以移植,哪些不能