在ubuntu14.04 LTS 上交叉编译ARM平台RK3326上运行的opencv2.4.9

本文详细介绍在Ubuntu14.04LTS环境下,使用gcc-linaro交叉编译工具链,针对AARCH64平台编译OpenCV的全过程。包括配置CMake,解决编译错误,如-fPIC选项的添加,pthread库的链接问题,以及特定代码警告和错误的修复方法。

PC系统:ubuntu14.04 LTS
交叉编译工具链:gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu

step1:

在opencv源代码目录创建文件夹:build,用于存放编译中间文件。

step2:

打开命令控制台,输入cmake-gui运行

step3:

配置源文件路径和编译中间文件路径:
在这里插入图片描述

step4:

在这里插入图片描述

step5:

C编译器:/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
C++编译器:/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++
头文件:/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include
在这里插入图片描述

step6:

在这里插入图片描述

step7:

取消选项:with-cuda,with-opencl
在这里插入图片描述

step8

更改安装目录:
在这里插入图片描述

step9

generate:
在这里插入图片描述

step10

打开命令控制台进入build目录,执行make -j4进行编译,当然会产生错误,后面根据错误具体再修改。

Linking CXX shared library ../../lib/libopencv_highgui.so
/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: ../../3rdparty/lib/libIlmImf.a(ImfHeader.cpp.obj): relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21' can not be used when making a shared object; recompile with -fPIC
/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: ../../3rdparty/lib/libIlmImf.a(ImfHeader.cpp.obj)(.text._ZNK3Imf6Header7writeToERNS_7OStreamEb+0x368): 无法解决 R_AARCH64_ADR_PREL_PG_HI21 重定向于符号 “_ZTVNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEE@@GLIBCXX_3.4.21” 有冲突
/usr/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: 最终连接失败: 错误的值
collect2: error: ld returned 1 exit status
make[2]: *** [lib/libopencv_highgui.so] 错误 1
make[1]: *** [modules/highgui/CMakeFiles/opencv_highgui.dir/all] 错误 2
make: *** [all] 错误 2

解决办法:
修改编译目录build下面的CMakeCache.txt文件,如下所示两个地方添加 -fPIC 选项。

CMAKE_CXX_FLAGS:STRING=-fPIC
CMAKE_C_FLAGS:STRING=-fPIC

step10

再次编译,继续出错。

Linking CXX executable ../../bin/opencv_test_core
../../lib/libopencv_ts.a(ts_gtest.cpp.obj):在函数‘test
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值