麒麟系统开发笔记(九):在国产麒麟系统上搭建宇视摄像头SDK基础环境Demo
<div class="cl-preview-section"><h1>前言</h1>
</div>
<div class="cl-preview-section">
<p> 国产麒麟系统开发上,使用宇视摄像头,本篇使用宇视官网的提供的SDK,搭建基础的国产系统上宇视摄像头SDK开发化境Demo。</p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>效果演示</h1>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/9005851c799c46ed83e7d94f25d69160.png"></p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>宇视SDK下载</h1>
</div>
<div class="cl-preview-section">
<p> CSDN粉丝0积分下载地址:https://download.csdn.net/download/qq21497936/86806967<br> QQ群下载:请回首页加QQ群,QQ群文件搜索"NETDEVSDK"<br> 官方下载地址:https://cn.uniview.com/<br> <img src="https://img-blog.csdnimg.cn/f5cecd149ffd455aa4f3df760b5c00db.png"><br> <img src="https://img-blog.csdnimg.cn/97ba4f02a1f24089ba9c7eaff27932c9.png"></p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>模块化部署</h1>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/3192e99ac19a4817a3dabf3bd7f57091.png"></p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>引入sdk</h1>
</div>
<div class="cl-preview-section">
<p> 在cameraManager.pri引入(非模块化可以直接在pro中添加):</p>
</div>
<div class="cl-preview-section">
<pre><code class="prism language-shell"><span class="token comment"># 引入摄像头头文件和sdk
DEFINES <span class="token operator">+= LINUX
INCLUDEPATH <span class="token operator">+= $<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS <span class="token operator">+= -L$<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS <span class="token operator">+= -lNetDEVSDK
</span></span></span></span></span></span></span></code></pre>
</div>
<div class="cl-preview-section">
<p> 其中LINUX宏是NetDEVSDK.h头文件中需要枚举的,其他为标准引入方法:头文件,库路径,库文件。<br> 运行报错:<br> <img src="https://img-blog.csdnimg.cn/3b55414b91f44b828f786cbca24ed735.png"></p>
</div>
<div class="cl-preview-section">
<p> 这里是因为libNetDEVSDk.so引用了很多其他的库,而这些库sdk的lib中也有,但是需要我们手动引入以下:<br> <img src="https://img-blog.csdnimg.cn/c524ce5d05fe48ceac5f243174c6db79.png"></p>
</div>
<div class="cl-preview-section">
<p> 按照错误提示,将需要的库引入:<br> <img src="https://img-blog.csdnimg.cn/6c332028582f4b8cb0206901b5517bf7.png"></p>
</div>
<div class="cl-preview-section">
<pre><code class="prism language-shell"><span class="token comment"># 引入摄像头头文件和sdk
DEFINES <span class="token operator">+= LINUX
INCLUDEPATH <span class="token operator">+= $<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS <span class="token operator">+= -L$<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS <span class="token operator">+= -lNetDEVSDK
LIBS <span class="token operator">+= -lmxml
LIBS <span class="token operator">+= -lNetDiscovery
LIBS <span class="token operator">+= -lcloud
LIBS <span class="token operator">+= -lpolarssl
LIBS <span class="token operator">+= -lcloudclient
LIBS <span class="token operator">+= -lcloudhttpcurl
LIBS <span class="token operator">+= -levent
LIBS <span class="token operator">+= -lstun
LIBS <span class="token operator">+= -lt2u
LIBS <span class="token operator">+= -lCloudSDK
LIBS <span class="token operator">+= -lNDPlayer
LIBS <span class="token operator">+= -lNDRM
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<div class="cl-preview-section">
<p> 编译报错,继续引入:<br> <img src="https://img-blog.csdnimg.cn/48313ea8d60a4698a5acc70b6e6d455f.png"></p>
</div>
<div class="cl-preview-section">
<p> 成功编译,然后运行:<br> <img src="https://img-blog.csdnimg.cn/299abb6864ce4b508bbbdd8a2a451b58.png"></p>
</div>
<div class="cl-preview-section">
<p> 使用qtcreator运行也需要引入,那么在工程中添加LD_LIBRARY_PATH路径,引入到模块下的lib中,本来还想在Qtcreator运行环境中引入,但是实际上已经有了:<br> <img src="https://img-blog.csdnimg.cn/65fe7f4493a64be1b00e45c7b9634fd0.png"><br> 这就奇怪了,已有了运行起来还加载不到,不纠结,使用ldconfig将其添加进系统连接路径:</p>
</div>
<div class="cl-preview-section">
<pre><code class="prism language-shell"><span class="token function">sudo <span class="token function">vi /etc/ld.so.conf
<span class="token function">sudo ldconfig
</span></span></span></code></pre>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/6ac071b1c4004d60981edb94a1f90865.png"><br> 成功运行起来:<br> <img src="https://img-blog.csdnimg.cn/3160e2502dbf4dbda694e88c4c151d89.png"><br> 使用此种方式,库也无需引入这么多了:<br> 最终cameraManager.pri如下:</p>
</div>
<div class="cl-preview-section">
<pre><code class="prism language-shell">INCLUDEPATH <span class="token operator">+= $<span class="token environment constant">$PWD
DEPENDPATH <span class="token operator">+= $<span class="token environment constant">$PWD
HEADERS <span class="token operator">+= <span class="token punctuation">\
$<span class="token environment constant">$PWD/CameraManager.h
SOURCES <span class="token operator">+= <span class="token punctuation">\
$<span class="token environment constant">$PWD/CameraManager.cpp
<span class="token comment"># 引入摄像头头文件和sdk
DEFINES <span class="token operator">+= LINUX
INCLUDEPATH <span class="token operator">+= $<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS <span class="token operator">+= -L$<span class="token environment constant">$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS <span class="token operator">+= -lNetDEVSDK
<span class="token comment"># 新系统后,将sdk的lib目录添加进/etc/ld-so.conf
<span class="token comment"># 绝对路径另起一行,无include
<span class="token comment"># 使用ldconfig即可
</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></pre>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>工程模板</h1>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/4f993b97286b467bb7c1499594dcf9c7.png"></p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>红胖子建议</h1>
</div>
<div class="cl-preview-section">
<p> 引入库的方法很多,根据项目情况和自身习惯选择合适自己的即可,但是有一点特别注意,就是项目迁移或者交接源代码的时候,一定要描述清楚,避免交接源码后接收代码着环境搭建都需要细节沟通甚至花费几天,尤其跨项目组部门公司这种,所以,笔者更倾向于直接将库包含进模块,这样笔者交接代码都属于傻瓜式交接,项目交接后都可直接编译修改的,基本不存在任何环境问题。(纯技术角度)</p>
</div>
<div class="cl-preview-section"> </div>
<div class="cl-preview-section">
<h1>ldconfig引入库方法总结</h1>
</div>
<div class="cl-preview-section">
<h2>步骤一:lib绝对文件夹路径获取</h2>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/837793ec5bbe415a9fa8aa6115f3c656.png"></p>
</div>
<div class="cl-preview-section">
<h2>步骤二:修改/etc/ld-so.conf,将lib库路径另起一行,填入库文件夹绝对路径一行</h2>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/37222205c078496e8245bcbee51c9a38.png"></p>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/24900155a31e48fc8ee40e1b10c6b9ab.png"></p>
</div>
<div class="cl-preview-section">
<h2>步骤三:使用ldconfig</h2>
</div>
<div class="cl-preview-section">
<p> <img src="https://img-blog.csdnimg.cn/28451c8617cc40b2a059f81de79de489.png"></p>
</div><br><br>
来源:https://www.cnblogs.com/qq21497936/p/16828390.html
頁:
[1]