<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙三方庫適配指南

OpenHarmony技術社區 ? 來源:OST開源開發者 ? 2023-02-14 09:33 ? 次閱讀

本文以 OpenHarmony-3.2-Beta4 上適配 modbus 編譯動態庫為例。

獲取三方庫

使用之前要做好代碼溯源,確認可用的版本,開源許可和發布方式等。

通過正確的路徑獲取源碼,可以是官網,或者指定托管的 github 或者 gitee 倉。

官網:https://libmodbus.org/
github:https://github.com/stephane/libmodbus

移植三方庫

三方庫移植主要需要以下四步。

linux 編譯

編譯三方庫:

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

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

分析編譯過程:提取編譯動態鏈接庫和測試用的可執行文件所需要的源文件和頭文件、編譯添加的 cflag 和其他編譯器參數,以及編譯需要的鏈接庫。

根據三方庫的編譯有兩種情況:

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

使用 Makefile.am 構建的三方庫,分析 make.am 內容,分析編譯動態鏈接庫和測試用的可執行文件需要的源文件,添加的編譯器參數。鏈接庫則通過分析 makefile 文件提取。

②OpenHarmony 適配

三方庫一般放置在 third_party 目錄下。

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

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

部件名:modbus_part_name = “libmodbus”

子系統名:modbus_subsystem_name = “modbus”

新增子系統和部件名的方式:

(1)在模塊目錄下配置 BUILD.gn,根據模板類型選擇對應的 gn 模板。

third_party/libmodbus/BUILD.gn
(2)在新建的子系統目錄下每個部件對應的文件夾下創建 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} 目錄下的產品配置如 product-name 是 hispark_taurus_standard 時,在 config.json 中添加對應的部件,直接添加到原有部件后即可。
productdefinecommoninheritrich.json
e126aa94-ab9b-11ed-bfe3-dac502259ad0.png

這幾步適配都需要根據三方庫的引用方式來確定,并不需要每步都配置。如果當前模塊是需要添加到已經有的部件或子系統,就只需要配置 1 和 2 步即可。

③增量編譯

編譯動態鏈接庫和可執行文件:

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

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

–target-cpuarm64

例如:

./build.sh--product-namerk3568--ccache-Tlibmodbus
編譯過程可能出現報錯,根據報錯信息調整 gn。消除編譯警告,例如:
-Wimplicit-function-declaration
改為:
-Wno-implicit-function-declaration

加到 gn的 cflags 信息里面。

編譯成功生成的動態鏈接庫和測試用的可執行文件在 out 目錄下。例如:

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

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

④驗證接口

將編譯好的動態庫和測試用例的可執行文件推送到開發板上。然后驗證是否成功,保證測試用例都能在開發板上運行通過。

API 接口是提供給北向調用的,實現指定的功能,使用者不需要了解其內部具體實現。按照業務需要提供 native 和 js 接口。

引用方式

①靜態庫

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

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

②動態庫

先編譯動態庫,然后放在板子指定路徑,然后通過 dlopen 導入動態庫,最后在代碼中通過句柄調引用接口。

例如:

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

審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • MODBUS
    +關注

    關注

    28

    文章

    1445

    瀏覽量

    75721
  • 移植
    +關注

    關注

    1

    文章

    367

    瀏覽量

    27859
  • 編譯
    +關注

    關注

    0

    文章

    616

    瀏覽量

    32403
  • 鴻蒙
    +關注

    關注

    55

    文章

    1651

    瀏覽量

    42132
  • OpenHarmony
    +關注

    關注

    23

    文章

    3328

    瀏覽量

    15172

原文標題:鴻蒙三方庫適配指南

文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    實錘!騰訊終于擁抱鴻蒙生態,微信鴻蒙原生版本即將上線

    大家都知道, 目前已知純血鴻蒙星河版next將于今年6月份開啟Bate版本的測試 ,也就是說原生鴻蒙系統快上線了。 而目前對于鴻蒙生態的發展,大家最關心的恐怕只有騰訊系的微信和QQ是否適配
    發表于 04-30 21:14

    騰訊突然宣布,微信鴻蒙版要來了!

    應用,僅支持鴻蒙內核和系統的應用,被稱為 “純血鴻蒙”而備受關注, 這意味著, 真正的國產手機操作系統要來了 ,而且影響力驚人, 一上線就是僅次于 Android 和 iOS 之后的全球第大手機操作系統
    發表于 04-30 19:34

    Labview如何內嵌操作第三方EXE程序!

    自己在網上搜了下相關資料,能把第三方EXE內嵌進入容器里,但是有個問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現嗎? 下圖是我內嵌的POLL 軟件。如圖!
    發表于 04-18 14:26

    鴻蒙OS開發學習:【尺寸適配實現】

    鴻蒙開發中,尺寸適配是一個重要的概念,它可以幫助我們在不同屏幕尺寸的設備上正確顯示和布局我們的應用程序。本文將介紹如何在鴻蒙開發中實現尺寸適配的方法。
    的頭像 發表于 04-10 16:05 ?682次閱讀
    <b class='flag-5'>鴻蒙</b>OS開發學習:【尺寸<b class='flag-5'>適配</b>實現】

    stm32H743IIT6串口2跟第三方設備通訊,不插USB就通訊不了怎么解決?

    stm32H743IIT6串口2跟第三方設備通訊。插上USB就可以通訊,不插USB就通訊不了,有沒有大神幫忙解決下
    發表于 03-22 06:42

    使用cubemx 生成usb驅動和配置第三方fatfs,fread讀取大于100k的文件,會超時的原因?

    使用cubemx 生成usb驅動和配置第三方fatfs,打開文件沒有報錯,使用fread讀取文件的時候大于100k的文件,會讀超時,小于100k正常讀完,為什么
    發表于 03-07 06:35

    使用 Taro 開發鴻蒙原生應用 —— 快速上手,鴻蒙應用開發指南

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

    OpenAtom OpenHarmony 三方創建發布及安全隱私檢測

    OpenAtom OpenHarmony三方(以下簡稱“三方”或“包”),是經過驗證可在OpenHarmony系統上可重復使用的軟件組件,可幫助開發者快速開發OpenHarmony
    發表于 11-13 17:27

    最受歡迎的第三方平臺——呼叫中心系統

    中小企業一定要選擇正規的呼叫中心供應商,只有應有強大的第三方合作平臺,才能擁有更專業的系統團隊以及系統維護平臺,只有可信的團隊才能為企業帶來良好的業績。 本公司呼叫中心系統憑借多年的呼叫中心
    發表于 09-20 17:54

    OpenHarmony創新賽|賦能直播第

    開放原子開源大賽OpenHarmony創新賽賦能直播間持續邀請眾多技術專家一起分享應用開發技術知識,本期推出OpenHarmony應用開發之音視頻播放器和三方的使用和方法,助力開發者掌握多媒體
    發表于 09-12 18:53

    【開源三方】crypto-js加密算法庫的使用方法

    OpenAtom OpenHarmony(簡稱“OpenHarmony”)三方,是經過驗證可在OpenHarmony系統上可重復使用的軟件組件,可幫助開發者快速開發OpenHarmony
    發表于 09-08 15:10

    【開源三方】bignumber.js:一個大數數學

    OpenHarmony(OpenAtom OpenHarmony簡稱“OpenHarmony”)三方,是經過驗證可在OpenHarmony系統上可重復使用的軟件組件,可幫助開發者快速開發
    發表于 08-21 16:37

    如何在蜂鳥處理器核的基礎上擴展第三方指令?

    想咨詢一下如何在蜂鳥處理器核的基礎上擴展第三方指令,使用戶自定義指令,并如何構建機器碼等內容? 我看了胡老師的RISC-V處理器設計的書里面講的使用custom1-4來進行擴展,并以EAI為實例進行
    發表于 08-16 07:36

    如何確定OpenVINO中第三方組件的相關許可?

    無法確定 OpenVINO?中第三方組件的相關許可。
    發表于 08-15 06:45

    NucleiStudio ide如何設置才能把Lib編譯進去?

    工程里增加了第三方的Lib,在NucleiStudio ide如何設置才能把這個編譯進去呢?
    發表于 08-11 11:37
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>