Xilinx SDSoc 加载opencv库
Xilinx SDSoc 加载opencv库需要下载两个文件 xfopencv 和 Revision Platform, Revision Platform需要和具体的开发板型号对应,我用的是zcu102开发板。
1.xfopencv : github地址 https://github.com/Xilinx/xfopencv 2.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./../../../../aarch64-linux-gnu/bin cd ../lib sudo 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 script
Use the shared library, but some functions are only in
the static library, so try that secondarily. */
OUTPUT_FORMAT(elf64-littleaarch64)
GROUP ( /lib/libpthread.so. /usr/lib/libpthread_nonshared.a ) 这里就看出了端倪,果然是被指定了绝对路径,把绝对路径去掉,像这样:
GROUP ( libpthread.so. 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./../../../../aarch64-linux-gnu/bin cd ../lib sudo 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
Xilinx SDSoc 加载opencv库的更多相关文章
- Eclipse c++环境搭建 并加载OpenCV库 2015最新
C++: 搜索 Eclipse c++ 即可 注意新版的mingw安装器,要安装: 1.mingw-developer-toolkit 2.mingw32-base 3.mingw32-gcc-g++ ...
- Windows平台LoadLibrary加载动态库搜索路径的问题
一.背景 在给Adobe Premiere/After Effects等后期制作软件开发第三方插件的时候,我们总希望插件依赖的动态库能够脱离插件的位置,单独存储到另外一个地方.这样一方面可以与其他程序 ...
- ajax的使用:(ajaxReturn[ajax的返回方法]),(eval返回字符串);分页;第三方类(page.class.php)如何载入;自动加载函数库(functions);session如何防止跳过登录访问(构造函数说明)
一.ajax例子:ajaxReturn("ok","eval")->thinkphp中ajax的返回值的方法,返回参数为ok,返回类型为eval(字符串) ...
- paip.ikanalyzer 重加载词库的方法.
paip.ikanalyzer 重加载词库的方法. 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn ...
- NDK jni 加载静态库
加载静态库到android,静态库的提供方式有2种, a. 通过源文件来编译静态库 b. 加载已经编译好的静态库 首先我们来看,通过源文件来编译静态库,工程目录如下 第一步:我们来看我们的jni目录, ...
- Linux下c函数dlopen实现加载动态库so文件代码举例
dlopen()是一个强大的库函数.该函数将打开一个新库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.这种机制使得在系统中添加或者删除一个模块时,都不需要重新编译了. ...
- PostgreSql扩展Sql-动态加载共享库(C函数)
基于 psql (PostgreSQL) 10.4 pg_language表定义了函数实现所使用的语言.主要支持了C语言和SQL语句.一些可选的语言包括pl/pgsql.tcl和perl. ligan ...
- LoadLibrary加载动态库失败
[1]LoadLibrary加载动态库失败的可能原因以及解决方案: (1)dll动态库文件路径不对.此场景细分为以下几种情况: 1.1 文件路径的确错误.比如:本来欲加载的是A文件夹下的动态库a.dl ...
- 谈谈动态地加载Jquery库文件的方法
有时候,我们可能不会在网页中<script src="jquery.min.js" 来加载 Jquery 库,可能在用户点击某个按钮后,才去加载 Jquery 库. 好处不用 ...
随机推荐
- php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释
1.1 PHP 超文本预处理程序.实际就是制作网站的脚本程序 1.2 运行环境: wamp——windowns+apache+mySQL+php 常用于开发.学习和研究 lamp ——linu ...
- php+mysql 安全
Php注入攻击是现今最流行的攻击方式,依靠它强大的灵活性吸引了广大黑迷. 在上一期的<php安全与注射专题>中林.linx主要讲述了php程序的各种漏洞,也讲到了php+mysql注入的问 ...
- Javascript代码收集
1.模仿jquery each 原文地址 function each(obj, fn){ var i; if(Object.prototype.toString.call(obj) === '[obj ...
- 微信公众号验证TOKEN
服务端验证微信token header('Content-type:text'); define("TOKEN", "weixin"); $signature ...
- join()方法作用
当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1 废话不多说看代码: package com.toov5.thread; public class JoinThreadT ...
- 五子棋AI的思路
隔了一年才把AI思路给写了... 需求分析与设计方案:http://www.cnblogs.com/songdechiu/p/4951634.html 如需整个工程,移步http://download ...
- python读取文件后切片
from itertools import islice with open(“1.txt") as f: for a in islice(f,0,2): print(a)
- SpringBoot_00_资源汇总贴
一.精选 1.Spring Boot文档 二.参考资料 1.springboot-learning-example 2.Spring boot 那些事 3.Spring Boot干货系列 4.Spri ...
- 详解linux上定时函数 setitimer
setitimer()为Linux的API,并非C语言的Standard Library,setitimer()有两个功能, 一是指定一段时间后,才执行某个function,二是每间格一段时间就执行某 ...
- [Poi2011] Meteors(从不知所措到整体二分)
Byteotian Interstellar Union (BIU) has recently discovered a new planet in a nearby galaxy. The plan ...