麒麟系統(tǒng)開發(fā)筆記(九):在國產(chǎn)麒麟系統(tǒng)上搭建宇視攝像頭SDK基礎(chǔ)環(huán)境Demo
前言
??國產(chǎn)麒麟系統(tǒng)開發(fā)上,使用宇視攝像頭,本篇使用宇視官網(wǎng)的提供的SDK,搭建基礎(chǔ)的國產(chǎn)系統(tǒng)上宇視攝像頭SDK開發(fā)化境Demo。
效果演示
??

宇視SDK下載
??官方下載地址:https://cn.uniview.com/
??

??

模塊化部署
??

引入sdk
??在cameraManager.pri引入(非模塊化可以直接在pro中添加):
# 引入攝像頭頭文件和sdkDEFINES += 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頭文件中需要枚舉的,其他為標(biāo)準(zhǔn)引入方法:頭文件,庫路徑,庫文件。
??運行報錯:
??

??這里是因為libNetDEVSDk.so引用了很多其他的庫,而這些庫sdk的lib中也有,但是需要我們手動引入以下:
??

??按照錯誤提示,將需要的庫引入:
??

# 引入攝像頭頭文件和sdkDEFINES += 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
??編譯報錯,繼續(xù)引入:
??

??成功編譯,然后運行:
???

??使用qtcreator運行也需要引入,那么在工程中添加LD_LIBRARY_PATH路徑,引入到模塊下的lib中,本來還想在Qtcreator運行環(huán)境中引入,但是實際上已經(jīng)有了:
???

??這就奇怪了,已有了運行起來還加載不到,不糾結(jié),使用ldconfig將其添加進系統(tǒng)連接路徑:
sudo vi /etc/ld.so.confsudo ldconfig
??

??成功運行起來:
???

??使用此種方式,庫也無需引入這么多了:
??最終cameraManager.pri如下:
INCLUDEPATH += $$PWDDEPENDPATH += $$PWDHEADERS += \
? ?$$PWD/CameraManager.h
SOURCES += \
? ?$$PWD/CameraManager.cpp# 引入攝像頭頭文件和sdkDEFINES += LINUX
INCLUDEPATH += $$PWD/NETDEVSDK_Linux64_V2.6.0.0/include
LIBS += -L$$PWD/NETDEVSDK_Linux64_V2.6.0.0/lib
LIBS += -lNetDEVSDK# 新系統(tǒng)后,將sdk的lib目錄添加進/etc/ld-so.conf# 絕對路徑另起一行,無include# 使用ldconfig即可
工程模板
??

紅胖子建議
??引入庫的方法很多,根據(jù)項目情況和自身習(xí)慣選擇合適自己的即可,但是有一點特別注意,就是項目遷移或者交接源代碼的時候,一定要描述清楚,避免交接源碼后接收代碼著環(huán)境搭建都需要細(xì)節(jié)溝通甚至花費幾天,尤其跨項目組部門公司這種,所以,筆者更傾向于直接將庫包含進模塊,這樣筆者交接代碼都屬于傻瓜式交接,項目交接后都可直接編譯修改的,基本不存在任何環(huán)境問題。(純技術(shù)角度)
ldconfig引入庫方法總結(jié)
步驟一:lib絕對文件夾路徑獲取
??

步驟二:修改/etc/ld-so.conf,將lib庫路徑另起一行,填入庫文件夾絕對路徑一行
??

??

步驟三:使用ldconfig
??
