Xilinx SDSoc 加载opencv库
Xilinx SDSoc 加载opencv库需要下载两个文件 xfopencv 和 Revision Platform, Revision Platform需要和具体的开发板型号对应,我用的是zcu102开发板。
1.xfopencv : github地址 https://github.com/Xilinx/xfopencv2.revision platform : https://www.xilinx.com/member/forms/download/design-license-xef.html?akdm=1&filename=zcu102-rv-ss-2017-4.zip
A. xfopencv下载好了以后放在 ~/.Xilinx/SDx/2017.4 目录(2017.4请修改为你的实际版本号)
B. Revision Platform下载后解压到/opt目录
2. 启动SDx 按照上一篇文章里面的步骤创建一个项目zcu102client,选中创建的项目,鼠标点击菜单栏的Xilinx 选中SDx Liraries
展开Xilinx xfopencv Library , 双击然后选择下面的Add to Project 会让你选择添加到哪个Project,点击ok完成添加。
添加完成后在选中创建的项目,点击Properties,可以看到Libraries下面多出来的就是上一步中SDx IDE自动为我们添加的opencv库。
这里可以把你用不到的库都删除掉,比如我就只用到了opencv_code opencv_videoio opencv_imgcodecs
最后还需要设置一个变量SYSROOT,设置为Revision Platform解压后的路径下的sw/sysroot (需要勾选show system variables才可以看到这个变量), 如下图:
修改完成后点击菜单栏的build就可以编译代码了。
下面总结一下build过程中遇到的几个问题,希望能给大家一个参考:
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find crt1.o
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find crti.o
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find crtn.o: No such file or directory
collect2: error: ld returned 1 exit status
分析:关注到这里报错的ld程序所在的bin路径,进入同级目录的lib目录,发现确实没有该文件,通过find /opt/zcu102_rv_ss/ -name “crt1.o” 又发现有这个文件存在,所以我们建立一个软连接即可
cd /opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bincd ../libsudo ln -s /opt/zcu102_rv_ss/sw/sysroot/usr/lib/crt1.o ./crt1.o sudo ln -s /opt/zcu102_rv_ss/sw/sysroot/usr/lib/crti.o ./crti.o sudo ln -s /opt/zcu102_rv_ss/sw/sysroot/usr/lib/crtn.o ./crtn.o
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find /lib/libpthread.so.0
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find /usr/lib/libpthread_nonshared.a
collect2: error: ld returned 1 exit status
分析:这个错误和上一个不同的是错误信息里面点名道姓的指定了绝对路径下文件找不到,但是用find命令查找的时候发现/opt/zcu102_rv_ss/sw/sysroot下面有/opt/zcu102_rv_ss/sw/sysroot/usr/lib/libpthread.so这个文件,由于xilinx SDx 都是调用静态链接库?动态链接库一般会指向静态链接库,所以用vim打开:
sudo vim /opt/zcu102_rv_ss/sw/sysroot/usr/lib/libpthread.so/* GNU ld scriptUse the shared library, but some functions are only inthe static library, so try that secondarily. */ OUTPUT_FORMAT(elf64-littleaarch64) GROUP ( /lib/libpthread.so.0 /usr/lib/libpthread_nonshared.a )这里就看出了端倪,果然是被指定了绝对路径,把绝对路径去掉,像这样: GROUP ( libpthread.so.0 libpthread_nonshared.a )
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bin/ld: cannot find libpthread.so.0
collect2: error: ld returned 1 exit status
分析:还记得crt1.o crti.o crtn.o 吗, 完全一样的错误信息,我这里为了防止类似的错误继续发生,而且可以看到
/opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/lib 本身是一个空目录,所以索性直接做了两个目录的软连接
cd /opt/Xilinx/SDK/2017.4/gnu/aarch64/lin/aarch64-linux/bin/../lib/gcc/aarch64-linux-gnu/6.2.1/../../../../aarch64-linux-gnu/bincd ../libsudo ln -sf /opt/zcu102_rv_ss/sw/sysroot/lib/ . sudo ln -sf /opt/zcu102_rv_ss/sw/sysroot/usr/ .
/opt/zcu102_rv_ss/sw/sysroot/usr/include/opencv2/core/cvdef.h error: unknown type name 'float32x2_t'
/opt/zcu102_rv_ss/sw/sysroot/usr/include/opencv2/core/cvdef.h error: unknown type name 'uint32_t'
....... (略过一大堆类似的未知类型)
分析:打开报错的头文件/opt/zcu102_rv_ss/sw/sysroot/usr/include/opencv2/core/cvdef.h 发现未知的类型是条件定义在一个CV_NEON宏下面的,也就是说CV_NEON = 1的时候就会报错,所以我把CV_NEON宏全部定义为了0
转载于:https://www.cnblogs.com/tsfh/p/9186388.html
Xilinx SDSoc 加载opencv库相关推荐
- Linux系统程序运行时加载动态库路径顺序
程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...
- php无法加载dll插件,php无法加载动态库怎么办
php无法加载动态库的解决办法:1.将PHP的集成包里的"libmySQL.dll"复制到system32目录下:2.将PHP的解压目录添加到PATH里:3.在Apache的配置文 ...
- Linux动态加载共享库,Linux共享库的动态加载(附测试案例)
共享库的动态加载是指可以在程序运行的过程中去加载所需的共享库.常用于某些系统或者应用程序的自动升级. 在C语言的源程序动态加载共享库,需要调用一组特殊的函数,它们被声明于一个专门的头文件dlfcn.h ...
- java.library.path hadoop_java - Hadoop“无法为您的平台加载native-hadoop库”警告
java - Hadoop"无法为您的平台加载native-hadoop库"警告 我目前正在运行CentOs的服务器上配置hadoop. 当我运行hadoop-env.sh或sto ...
- 使用Poco实现插件方式加载动态库
动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...
- QLibrary Class Reference(qt加载外部库)
QLibrary Class Reference [QtCore module] 该类加载分享的库在运行时. #include <QLibrary> 继承QObject 注意:所有函数是可 ...
- sunPKCS11加载动态库(转)
sunPKCS11加载动态库(转) http://www.cnblogs.com/sunfb/archive/2013/03/01/2938491.html 这篇文章不介绍具体的编程方法,而是针对PK ...
- tableview动态修改和删除_Ubuntu加载动态库失败的解决方案
在ubuntu下代码编译通过的情况下,经常出现运行时加载动态库出错的情况.这些问题很琐碎,不具备任何技术含量,纯属耽误时间,这也是linux系统的通病,花里胡哨,故弄玄虚. 为了减少初学者在这种无意义 ...
- php7.2 加载pgsql驱动,PHP启动:无法加载动态库PGSQL - php
我正在尝试使用运行Symfony 3.x: Ubuntu 16.04 PHP 7.0 NGinx 我想与我创建的PGSQL数据库进行交互,但出现此错误: PHP警告:PHP启动:无法加载动态库 '/u ...
- android通过Jni加载so库遇到UnsatisfiedLinkError问题!!!
错误信息: java.lang.UnsatisfiedLinkError: hsl.p2pipcam.nativecaller.NativeCaller at hsl.p2pipcam.manager ...
最新文章
- 特征工程(五)length
- Android 使用CornerPathEffect绘制圆角矩形
- JS中创建函数的几种方式
- A*搜索算法--游戏寻路
- 滨江机器人餐厅_餐厅来了机器人服务员
- 【java】Java 8 - 移除Permgen 使用元空间
- 设计灵感|电商美工,年年都能借鉴的新年
- java画笔覆盖在界面_Java画笔的简单实用方法
- 聊聊我的 2018 年
- Threejs实现天空盒,全景场景,地面草地
- 还在为word排版而发愁?word的实验报告模板word数学建模模板免费领~(开头直接放百度网盘链接,直接拿去用就行)
- 2022新版UI聚合支付系统四方系统源码+修复漏洞完美版
- 安装完Fedora 18后需要做的事情
- C++:实现量化相关的Interpolation插值测试实例
- Android Studio 如何查看Sqlite数据文件
- x86保护模式——全局描述符表GDT详解
- 华为OD机试 - 相对开音节 | 备考思路,刷题要点,答疑 【新解法】
- 使用 Nginx 构建前端日志统计服务(打点采集)服务
- 【开源技术分享】无需流媒体服务,让浏览器直接播放rtsp/rtmp的神器:EasyMedia
- 快捷键windows+D