麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo

前言

  国产麒麟系统开发上,使用宇视摄像头,本篇使用宇视官网的提供的 SDK,搭建基础的国产系统上宇视摄像头 SDK 开发化境 Demo。

 

效果演示

  在这里插入图片描述

 

宇视 SDK 下载

  CSDN 粉丝 0 积分下载地址:https://download.csdn.net/download/qq21497936/86806967
  QQ 群下载:请回首页加 QQ 群,QQ 群文件搜索 "NETDEVSDK"
  官方下载地址:https://cn.uniview.com/
  在这里插入图片描述
  在这里插入图片描述

 

模块化部署

  在这里插入图片描述

 

引入 sdk

  在 cameraManager.pri 引入(非模块化可以直接在 pro 中添加):

# 引入摄像头头文件和 sdk
DEFINES += LINUX
INCLUDEPATH += $$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS += -L$$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS += -lNetDEVSDK

  其中 LINUX 宏是 NetDEVSDK.h 头文件中需要枚举的,其他为标准引入方法:头文件,库路径,库文件。
  运行报错:
  在这里插入图片描述

  这里是因为 libNetDEVSDk.so 引用了很多其他的库,而这些库 sdk 的 lib 中也有,但是需要我们手动引入以下:
  在这里插入图片描述

  按照错误提示,将需要的库引入:
  在这里插入图片描述

# 引入摄像头头文件和 sdk
DEFINES += LINUX
INCLUDEPATH += $$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS += -L$$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS += -lNetDEVSDK

LIBS += -lmxml
LIBS += -lNetDiscovery
LIBS += -lcloud
LIBS += -lpolarssl
LIBS += -lcloudclient
LIBS += -lcloudhttpcurl
LIBS += -levent
LIBS += -lstun
LIBS += -lt2u
LIBS += -lCloudSDK
LIBS += -lNDPlayer
LIBS += -lNDRM

  编译报错,继续引入:
  在这里插入图片描述

  成功编译,然后运行:
   在这里插入图片描述

  使用 qtcreator 运行也需要引入,那么在工程中添加 LD_LIBRARY_PATH 路径,引入到模块下的 lib 中,本来还想在 Qtcreator 运行环境中引入,但是实际上已经有了:
   在这里插入图片描述
  这就奇怪了,已有了运行起来还加载不到,不纠结,使用 ldconfig 将其添加进系统连接路径:

sudo vi /etc/ld.so.conf
sudo ldconfig

  在这里插入图片描述
  成功运行起来:
   在这里插入图片描述
  使用此种方式,库也无需引入这么多了:
  最终 cameraManager.pri 如下:

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS +=
$$PWD/CameraManager.h

SOURCES +=
$$PWD/CameraManager.cpp

引入摄像头头文件和 sdk

DEFINES += LINUX
INCLUDEPATH += $$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS += -L$$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS += -lNetDEVSDK

新系统后,将 sdk 的 lib 目录添加进 /etc/ld-so.conf

# 绝对路径另起一行,无 include
# 使用 ldconfig 即可

 

工程模板

  在这里插入图片描述

 

红胖子建议

  引入库的方法很多,根据项目情况和自身习惯选择合适自己的即可,但是有一点特别注意,就是项目迁移或者交接源代码的时候,一定要描述清楚,避免交接源码后接收代码着环境搭建都需要细节沟通甚至花费几天,尤其跨项目组部门公司这种,所以,笔者更倾向于直接将库包含进模块,这样笔者交接代码都属于傻瓜式交接,项目交接后都可直接编译修改的,基本不存在任何环境问题。(纯技术角度)

 

ldconfig 引入库方法总结

步骤一:lib 绝对文件夹路径获取

  在这里插入图片描述

步骤二:修改 /etc/ld-so.conf,将 lib 库路径另起一行,填入库文件夹绝对路径一行

  在这里插入图片描述

  在这里插入图片描述

步骤三:使用 ldconfig

  在这里插入图片描述