NCNN移植ARM爬坑日志-opencv交叉编译 二

因为本人的arm板上面原先装有opencv3,但是NCNN暂时只支持opencv2,故就自己在Ubuntu系统下交叉编译opencv2.4.9

详细步骤如下:

terminal中输入

1、$sudo cmake-gui

进入cmake-gui页面

>1如图所示,

where is the source code:是添加需要交叉编译的opencv主目录

where to build the binaries:需要我们在opencv主目录下建立的文件

选好这两个位置点configure


>2选择之后会出现如下图所示,

如图选择specifyoptions for cross-compiling,next



>3会出现如图所示:

operating system:选择目标系统arm-linux

compilers:选择交叉编译的gccg++目录

Target Root:选择交叉编译的路径





点击finish按钮,开始生成配置文件,这时会有报错

错误1:

CMake Error atcmake/FindCUDA.cmake:763 (if):
if given arguments:

"CUDA_VERSION""VERSION_GREATER" "5.0" "AND""CMAKE_CROSSCOMPILING" "AND" "MATCHES""arm"

Unknown arguments specified
Call Stack(most recent call first):
cmake/OpenCVDetectCUDA.cmake:26(find_package)
cmake/OpenCVFindLibsPerf.cmake:24(include)
CMakeLists.txt:468 (include)

Configuring incomplete, errorsoccurred!

See also"/home/wolf/Downloads/opencv-2.4.9/build/CMakeFiles/CMakeOutput.log".

See also"/home/wolf/Downloads/opencv-2.4.9/build/CMakeFiles/CMakeError.log".

解决方法:在search中搜索WITH_CUDA,取消勾选重新点击configure按钮


最后点击generate按钮,完成编译过程

然后进入build目录,在terminal中输入

2、$sudo make


出现错误2

../../lib/libopencv_core.so: undefined reference to`pthread_spin_init'

../../lib/libopencv_core.so: undefined reference to`pthread_spin_unlock'

../../lib/libopencv_core.so: undefined reference to`pthread_spin_lock'

../../lib/libopencv_core.so: undefined reference to`pthread_spin_destroy'

../../lib/libopencv_core.so: undefined reference to`pthread_once'

../../lib/libopencv_core.so: undefined reference to`pthread_spin_trylock'

collect2: error: ld returned 1 exit status

make[2]: *** [bin/opencv_perf_core] Error 1

make[1]: *** [modules/core/CMakeFiles/opencv_perf_core.dir/all]Error 2

make: *** [all] Error 2

解决方法:原因是cmake不认识定义的arm-linux系统标记,没有加上库pthreadrt的链接选项

此时需要修改build里面的CMakeCache.txtCMAKE_EXE_LINKER_FLAGS原来为空,加上-lpthread -lrt,修改方法如图所示:



出现错误3../../3rdparty/lib/libzlib.a(gzlib.c.obj):relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not beused when making a shared object; recompile with -fPIC类似的很多

解决方法:在如图所示目录下,把每个包含flags.make文件中的C_FLAGS行中加-fPIC



出现错误4

../../lib/libopencv_ocl.so: undefined reference to `dlopen'

../../lib/libopencv_ocl.so: undefined reference to `dlsym'

collect2: error: ld returned 1 exit status

make[2]: *** [bin/opencv_perf_ocl] Error 1

make[1]: *** [modules/ocl/CMakeFiles/opencv_perf_ocl.dir/all]Error 2

make: *** [all] Error 2

解决方法:出现这个错误的原因是没有找到dl库,修改需要继续修改build里面的CMakeCache.txt,在CMAKE_EXE_LINKER_FLAGS= -lpthread -lrt -ldl即可


最后运行在build目录下运行

3 $sudo make install


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值