RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙三方庫(kù)適配指南

OpenHarmony技術(shù)社區(qū) ? 來(lái)源:OST開(kāi)源開(kāi)發(fā)者 ? 2023-02-14 09:33 ? 次閱讀

本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動(dòng)態(tài)庫(kù)為例。

獲取三方庫(kù)

使用之前要做好代碼溯源,確認(rèn)可用的版本,開(kāi)源許可和發(fā)布方式等。

通過(guò)正確的路徑獲取源碼,可以是官網(wǎng),或者指定托管的 github 或者 gitee 倉(cāng)。

官網(wǎng):https://libmodbus.org/
github:https://github.com/stephane/libmodbus

移植三方庫(kù)

三方庫(kù)移植主要需要以下四步。

linux 編譯

編譯三方庫(kù):

如果原三方庫(kù)根目錄存在 CMakeLists.txt 文件,新建 build 目錄,通過(guò) cmake 生成 makeflie 然后 make。

如果根目錄存在 autogen.sh 或 configure.ac 文件,使用 Makefile.am 構(gòu)建,先執(zhí)行 ./autogen.sh,再執(zhí)行 ./configure 命令生成 Makefile,最后 make 和 make install。

分析編譯過(guò)程:提取編譯動(dòng)態(tài)鏈接庫(kù)和測(cè)試用的可執(zhí)行文件所需要的源文件和頭文件、編譯添加的 cflag 和其他編譯器參數(shù),以及編譯需要的鏈接庫(kù)。

根據(jù)三方庫(kù)的編譯有兩種情況:

在 cmake 生成 makefile 的過(guò)程中,分析 build.make(生成目標(biāo)的源文件)、depend.make(需要依賴的其他 C 源文件)、flags.make(cflags 相關(guān)標(biāo)記)、link.txt(鏈接庫(kù)相關(guān)信息)等得出三方庫(kù)對(duì)應(yīng)的依賴關(guān)系。

使用 Makefile.am 構(gòu)建的三方庫(kù),分析 make.am 內(nèi)容,分析編譯動(dòng)態(tài)鏈接庫(kù)和測(cè)試用的可執(zhí)行文件需要的源文件,添加的編譯器參數(shù)。鏈接庫(kù)則通過(guò)分析 makefile 文件提取。

②OpenHarmony 適配

三方庫(kù)一般放置在 third_party 目錄下。

編譯之前要增加模塊配置,可以參考以下鏈接:

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-build-module.md#新增并編譯模塊

部件名:modbus_part_name = “l(fā)ibmodbus”

子系統(tǒng)名:modbus_subsystem_name = “modbus”

新增子系統(tǒng)和部件名的方式:

(1)在模塊目錄下配置 BUILD.gn,根據(jù)模板類(lèi)型選擇對(duì)應(yīng)的 gn 模板。

third_party/libmodbus/BUILD.gn
(2)在新建的子系統(tǒng)目錄下每個(gè)部件對(duì)應(yīng)的文件夾下創(chuàng)建 bundle.json 文件,定義部件信息。
third_party/libmodbus/bundle.json
(3)修改 build 目錄下的 subsystem_config.json 文件。
buildsubsystem_config.json
e107d7d6-ab9b-11ed-bfe3-dac502259ad0.png (4)在 vendor/{product_company}/{product-name} 目錄下的產(chǎn)品配置如 product-name 是 hispark_taurus_standard 時(shí),在 config.json 中添加對(duì)應(yīng)的部件,直接添加到原有部件后即可。
productdefinecommoninheritrich.json
e126aa94-ab9b-11ed-bfe3-dac502259ad0.png

這幾步適配都需要根據(jù)三方庫(kù)的引用方式來(lái)確定,并不需要每步都配置。如果當(dāng)前模塊是需要添加到已經(jīng)有的部件或子系統(tǒng),就只需要配置 1 和 2 步即可。

③增量編譯

編譯動(dòng)態(tài)鏈接庫(kù)和可執(zhí)行文件:

./build.sh--product-namerk3568--ccache--build-target

注:三方庫(kù)名稱 --target-cpu arm64,ohos 到 3.2 版本之后,默認(rèn)編譯的都是 32 位系統(tǒng),若要支持 64 位系統(tǒng),在編譯命令中添加:

–target-cpuarm64

例如:

./build.sh--product-namerk3568--ccache-Tlibmodbus
編譯過(guò)程可能出現(xiàn)報(bào)錯(cuò),根據(jù)報(bào)錯(cuò)信息調(diào)整 gn。消除編譯警告,例如:
-Wimplicit-function-declaration
改為:
-Wno-implicit-function-declaration

加到 gn的 cflags 信息里面。

編譯成功生成的動(dòng)態(tài)鏈接庫(kù)和測(cè)試用的可執(zhí)行文件在 out 目錄下。例如:

out/rk3568/modbus/libmodbus/libmodbus.z.so

e1429b3c-ab9b-11ed-bfe3-dac502259ad0.png

④驗(yàn)證接口

將編譯好的動(dòng)態(tài)庫(kù)和測(cè)試用例的可執(zhí)行文件推送到開(kāi)發(fā)板上。然后驗(yàn)證是否成功,保證測(cè)試用例都能在開(kāi)發(fā)板上運(yùn)行通過(guò)。

API 接口是提供給北向調(diào)用的,實(shí)現(xiàn)指定的功能,使用者不需要了解其內(nèi)部具體實(shí)現(xiàn)。按照業(yè)務(wù)需要提供 native 和 js 接口。

引用方式

①靜態(tài)庫(kù)

在部件中需要使用的 gn 中配置 deps 項(xiàng),然后在代碼中直接引用接口。

“//third_party/libmodbus:modbus”,
例如: e1564cf4-ab9b-11ed-bfe3-dac502259ad0.png

②動(dòng)態(tài)庫(kù)

先編譯動(dòng)態(tài)庫(kù),然后放在板子指定路徑,然后通過(guò) dlopen 導(dǎo)入動(dòng)態(tài)庫(kù),最后在代碼中通過(guò)句柄調(diào)引用接口。

例如:

if(handle==nullptr){
MMI_HILOGE("Openfailed,soname:%{public}s,msg:%{public}s",pluginPath.data(),dlerror());
returnfalse;
}

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • MODBUS
    +關(guān)注

    關(guān)注

    28

    文章

    1799

    瀏覽量

    76947
  • 移植
    +關(guān)注

    關(guān)注

    1

    文章

    379

    瀏覽量

    28124
  • 編譯
    +關(guān)注

    關(guān)注

    0

    文章

    657

    瀏覽量

    32852
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2339

    瀏覽量

    42805
  • OpenHarmony
    +關(guān)注

    關(guān)注

    25

    文章

    3713

    瀏覽量

    16253

原文標(biāo)題:鴻蒙三方庫(kù)適配指南

文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    三方檢測(cè)機(jī)構(gòu)該如何提升核心競(jìng)爭(zhēng)力?

    在國(guó)家“一帶一路”和“智能制造2025”等政策的引領(lǐng)下,面對(duì)競(jìng)爭(zhēng)日益激烈的國(guó)際環(huán)境,作為全球最大的制造業(yè)國(guó)家,中國(guó)的檢測(cè)行業(yè)正經(jīng)歷著迅猛的發(fā)展,成為全球增長(zhǎng)最快、潛力最大的市場(chǎng)之一。 第三方檢測(cè)逐漸
    的頭像 發(fā)表于 12-17 15:44 ?66次閱讀
    第<b class='flag-5'>三方</b>檢測(cè)機(jī)構(gòu)該如何提升核心競(jìng)爭(zhēng)力?

    鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件

    使用的第三方插件,其底層以的庫(kù)沒(méi)有適配鴻蒙,則需要通過(guò)overrider配置其鴻蒙化的替代插件,否則會(huì)在運(yùn)行時(shí)報(bào)錯(cuò)。如下面所示: ```y
    發(fā)表于 10-22 21:54

    瑞芯微RK3566鴻蒙開(kāi)發(fā)板Android11修改第三方輸入法為默認(rèn)輸入法

    本文適用于觸覺(jué)智能所有支持Android11系統(tǒng)的開(kāi)發(fā)板修改第三方輸入法為默認(rèn)輸入法。本次使用的是觸覺(jué)智能的Purple Pi OH鴻蒙開(kāi)源主板,搭載了瑞芯微RK3566芯片,類(lèi)樹(shù)莓派設(shè)計(jì),是Laval官方社區(qū)主薦的一款鴻蒙開(kāi)發(fā)
    的頭像 發(fā)表于 09-24 09:43 ?425次閱讀
    瑞芯微RK3566<b class='flag-5'>鴻蒙</b>開(kāi)發(fā)板Android11修改第<b class='flag-5'>三方</b>輸入法為默認(rèn)輸入法

    維天地低代碼開(kāi)發(fā)平臺(tái)助力第三方質(zhì)檢行業(yè)數(shù)據(jù)可視化

    三方檢驗(yàn)是由獨(dú)立于買(mǎi)賣(mài)雙方利益之外的第三方機(jī)構(gòu)(例如專(zhuān)業(yè)的監(jiān)督檢驗(yàn)機(jī)構(gòu))執(zhí)行的,這些機(jī)構(gòu)以公正、公平、權(quán)威的非當(dāng)事人身份,依據(jù)雙方共同認(rèn)可的法律、標(biāo)準(zhǔn)和合同等進(jìn)行商品的符合性檢驗(yàn)和認(rèn)證活動(dòng)
    的頭像 發(fā)表于 08-09 13:59 ?264次閱讀
    <b class='flag-5'>三</b>維天地低代碼開(kāi)發(fā)平臺(tái)助力第<b class='flag-5'>三方</b>質(zhì)檢行業(yè)數(shù)據(jù)可視化

    請(qǐng)問(wèn)esp8266會(huì)開(kāi)放使用第三方云服務(wù)器嗎?

    如題,esp8266會(huì)開(kāi)放使用第三方云服務(wù)器嗎,如百度,阿里云服務(wù)器?
    發(fā)表于 07-12 11:40

    微軟或?qū)㈤_(kāi)放Xbox主機(jī)授權(quán)給第三方廠商

    據(jù)悉,5 月 26 日,知名媒體 Windows Central 的編輯 Jez Corden 揭露了微軟即將遵循第三方手柄流程,允許在其 XBOX 主機(jī)上引入第三方產(chǎn)品。
    的頭像 發(fā)表于 05-27 15:18 ?652次閱讀

    蘋(píng)果更新配件設(shè)計(jì)指南,第三方廠商可生產(chǎn)非MFi認(rèn)證頭顯配件

    值得注意的是,該指南中最關(guān)鍵的部分是關(guān)于Vision Pro頭戴式設(shè)備的頭帶卡扣裝置,它使蘋(píng)果原裝頭帶能方便地與頭顯相連。參照蘋(píng)果列出的具體規(guī)格,第三方制造商可更易生產(chǎn)出同樣尺寸且價(jià)格更為親民的頭帶。
    的頭像 發(fā)表于 05-20 16:53 ?598次閱讀

    中軟國(guó)際攜手愛(ài)聚科技,與上栗縣文廣新旅局完成三方簽約

    4月24日,中軟國(guó)際科技服務(wù)有限公司(以下簡(jiǎn)稱“中軟國(guó)際”)攜手上海愛(ài)聚網(wǎng)絡(luò)科技有限公司(以下簡(jiǎn)稱“愛(ài)聚科技”),就萍鄉(xiāng)市鴻蒙元服務(wù)生態(tài)合作事宜,與江西省萍鄉(xiāng)市上栗縣文化廣電新聞出版旅游局完成三方簽約。
    的頭像 發(fā)表于 04-28 10:42 ?545次閱讀
    中軟國(guó)際攜手愛(ài)聚科技,與上栗縣文廣新旅局完成<b class='flag-5'>三方</b>簽約

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個(gè)問(wèn)題,這個(gè)第三方軟件必須手動(dòng)拖到容器正中間,手動(dòng)最大化。請(qǐng)問(wèn)有什么方法可以自動(dòng)實(shí)現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    鴻蒙OS開(kāi)發(fā)學(xué)習(xí):【第三方庫(kù)調(diào)用】

    在Stage模型中,如何調(diào)用已經(jīng)上架到[三方庫(kù)中心]的社區(qū)庫(kù)和項(xiàng)目?jī)?nèi)創(chuàng)建的本地庫(kù)
    的頭像 發(fā)表于 04-14 11:34 ?900次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā)學(xué)習(xí):【第<b class='flag-5'>三方</b><b class='flag-5'>庫(kù)</b>調(diào)用】

    鴻蒙OS開(kāi)發(fā)學(xué)習(xí):【尺寸適配實(shí)現(xiàn)】

    鴻蒙開(kāi)發(fā)中,尺寸適配是一個(gè)重要的概念,它可以幫助我們?cè)诓煌聊怀叽绲脑O(shè)備上正確顯示和布局我們的應(yīng)用程序。本文將介紹如何在鴻蒙開(kāi)發(fā)中實(shí)現(xiàn)尺寸適配的方法。
    的頭像 發(fā)表于 04-10 16:05 ?1732次閱讀
    <b class='flag-5'>鴻蒙</b>OS開(kāi)發(fā)學(xué)習(xí):【尺寸<b class='flag-5'>適配</b>實(shí)現(xiàn)】

    Meta Quest頭顯將支持多款安卓第三方應(yīng)用并行

    Meta已悄然啟動(dòng)了與此相關(guān)的功能,意味著Quest頭顯可同時(shí)操作多個(gè)第三方Android應(yīng)用。在此之前,Quest對(duì)第三方Android應(yīng)用有嚴(yán)格限制,用戶每次僅能打開(kāi)一個(gè),無(wú)法實(shí)現(xiàn)同屏幕并行多個(gè)第三方應(yīng)用進(jìn)程。
    的頭像 發(fā)表于 03-11 10:58 ?738次閱讀

    使用 Taro 開(kāi)發(fā)鴻蒙原生應(yīng)用 —— 快速上手,鴻蒙應(yīng)用開(kāi)發(fā)指南

    鴻蒙原生應(yīng)用。 在 《使用 Taro 開(kāi)發(fā)鴻蒙原生應(yīng)用》 系列文章中,我們已經(jīng)介紹了 鴻蒙的基本概念 和 Taro 適配鴻蒙的原理。本文作
    的頭像 發(fā)表于 02-02 16:09 ?857次閱讀
    使用 Taro 開(kāi)發(fā)<b class='flag-5'>鴻蒙</b>原生應(yīng)用 —— 快速上手,<b class='flag-5'>鴻蒙</b>應(yīng)用開(kāi)發(fā)<b class='flag-5'>指南</b>

    鴻蒙物聯(lián)網(wǎng)基礎(chǔ)

    關(guān)于物聯(lián)網(wǎng)架構(gòu)以及鴻蒙三方應(yīng)用庫(kù)的引用方式
    的頭像 發(fā)表于 01-08 08:37 ?527次閱讀
    <b class='flag-5'>鴻蒙</b>物聯(lián)網(wǎng)基礎(chǔ)

    【堅(jiān)果派】JS開(kāi)源庫(kù)適配OpenHarmony系列——第一期實(shí)操

    由于OpenHarmony應(yīng)用是基于ArkTS開(kāi)發(fā),而ArkTS是在保持TypeScript(簡(jiǎn)稱TS)基礎(chǔ)語(yǔ)法風(fēng)格的基礎(chǔ)上,對(duì)TS的動(dòng)態(tài)類(lèi)型特性施加更嚴(yán)格的約束,引入靜態(tài)類(lèi)型。因此在開(kāi)發(fā)OpenHarmony三方庫(kù)時(shí),建議首選在成熟的JS/TS開(kāi)源
    的頭像 發(fā)表于 12-26 10:48 ?1159次閱讀
    【堅(jiān)果派】JS開(kāi)源<b class='flag-5'>庫(kù)</b><b class='flag-5'>適配</b>OpenHarmony系列——第一期實(shí)操
    RM新时代网站-首页