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

    文章

    2565

    浏览量

    84046
  • 移植
    +关注

    关注

    1

    文章

    417

    浏览量

    29585
  • 编译
    +关注

    关注

    0

    文章

    697

    浏览量

    35345
  • 鸿蒙
    +关注

    关注

    60

    文章

    3067

    浏览量

    46270
  • OpenHarmony
    +关注

    关注

    33

    文章

    3985

    浏览量

    21461

原文标题:鸿蒙三方库适配指南

文章出处:【微信号:gh_834c4b3d87fe,微信公众号:OpenHarmony技术社区】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    为什么MES企业要跟第三方机构合作设备数据采集?

    综上考虑,多数MES企业都不直接承接设备数据采集业务,而是选择和第三方机构合作。毕竟第三方机构长期耕耘这一领域,拥有成熟的产品体系、完善的技术路线以及专业的现场施工团队,能够快速应对各类现场难题,将
    的头像 发表于 03-19 15:03 938次阅读
    为什么MES企业要跟第<b class='flag-5'>三方</b>机构合作设备数据采集?

    苹果17可以无线充电吗?第三方配件怎么选?

    iPhone 17无线充电提升车载体验,支持Qi2.2,磁吸强、散热好,第三方配件需认准MFM认证。
    的头像 发表于 03-19 08:17 1118次阅读
    苹果17可以无线充电吗?第<b class='flag-5'>三方</b>配件怎么选?

    CW32W031调制频率的话有第三方软件工具么?

    请问,CW32W031调制频率的话,有第三方软件工具么?仿真软件也行
    发表于 01-19 06:54

    DEKRA德凯获得沃尔沃汽车第三方实验室认可资质

    近日,DEKRA德凯上海实验室成功通过沃尔沃汽车材料工程中心的严格评审,被正式列入其认可的第三方实验室名单。
    的头像 发表于 10-16 10:27 1014次阅读

    货拉拉开源两款三方,为鸿蒙应用高效开发贡献力量

    、可扩展的通用工具,持续提升鸿蒙应用的创新体验与开发效率。 在这一生态共建的浪潮中,货拉拉积极贡献了其在鸿蒙应用开发过程中的宝贵经验与技术积累,开源了两款实用三方——AspectPr
    的头像 发表于 08-26 14:02 713次阅读
    货拉拉开源两款<b class='flag-5'>三方</b><b class='flag-5'>库</b>,为<b class='flag-5'>鸿蒙</b>应用高效开发贡献力量

    基于开源鸿蒙的语音识别及语音合成应用开发样例

    本期内容由AI Model SIG提供,介绍了在开源鸿蒙中,利用sherpa_onnx开源三方进行ASR语音识别与TTS语音合成应用开发的流程。
    的头像 发表于 08-25 14:26 4584次阅读
    基于开源<b class='flag-5'>鸿蒙</b>的语音识别及语音合成应用开发样例

    电子测试行业中的第三方检测机构如何解决平台灵活度低,维护困难等痛点问题?

    维护难,以及数据报告格式种类繁杂、产品对应软件开发耗时耗力等问题。而 ATECLOUD 智能云测试平台的出现,为该机构带来了转机,成功助力其优化第三方来料测试流程。​ 第三方检测机构测试 痛点剖析​ 产品与系统适配难题:该检
    的头像 发表于 08-06 17:07 1030次阅读
    电子测试行业中的第<b class='flag-5'>三方</b>检测机构如何解决平台灵活度低,维护困难等痛点问题?

    鸿蒙非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件

    近日,企查查将其自研的鸿蒙弹窗组件“QuickDialog”开源,并上线至 OpenHarmony 三方中心仓。这是鸿蒙生态首个支持“弹
    的头像 发表于 07-31 10:40 920次阅读
    <b class='flag-5'>鸿蒙</b>非侵入式弹窗新解法,企查查正式开源“QuickDialog”弹窗组件<b class='flag-5'>库</b>

    飞书富文本组件RichTextVista开源

    近日,飞书正式将其自研的富文本组件 RichTextVista(简称“RTV”)开源,并上线OpenHarmony 三方中心仓。该组件以领先的性能、流畅的渲染体验与高度的开放性,为鸿蒙
    的头像 发表于 07-16 16:47 1238次阅读

    如何集成第三方支付API到电商网站

    ​ 在电商网站中,集成第三方支付API是确保交易安全、提升用户体验的关键步骤。本文将逐步指导您完成整个流程,从选择支付提供商到上线后的监控。文章结构清晰,包含代码示例和实用建议,帮助您高效实现支付
    的头像 发表于 07-16 10:35 810次阅读
    如何集成第<b class='flag-5'>三方</b>支付API到电商网站

    天合跟踪获得DNV第三方风洞测试审查报告

    近日, 天合跟踪获得DNV颁发的中国支架行业首张风洞实验第三方审查报告。该风洞报告由天合跟踪与同济大学合作,针对开拓者1P跟踪支架进行了全新的刚性模型测压试验和先进动力学分析研究,并由DNV进行独立
    的头像 发表于 07-08 17:35 1188次阅读

    HarmonyOS入门指南

    OpenHarmony三方中心仓 坚果派 童长老仓库中心 鸿蒙宝典 一本快速学习鸿蒙的电子书 promises-book JavaScript Promise迷你书。 harmon
    的头像 发表于 06-27 00:11 972次阅读

    三方工业互联网平台有哪些

    三方工业互联网平台有哪些
    的头像 发表于 06-14 15:48 1595次阅读

    鸿蒙5开发宝藏案例分享---切面编程实战揭秘

    版) ✅ 无侵入式监控 ✅ 三方安全加固 ✅ 差异化子类定制 官方文档藏得深,但实际用起来真香!建议大家收藏本文案例,关键时刻能省80%的加班时间~ **遇到问题欢迎在评论区交流,一起玩转鸿蒙黑科技! **?
    发表于 06-12 16:21

    小鹏汽车出席东盟-中国-海合会三方经济论坛

    近日,东盟-中国-海合会三方经济论坛于马来西亚吉隆坡盛大开幕,中国新能源汽车领军企业代表小鹏汽车受邀出席开幕式及系列活动。
    的头像 发表于 06-04 15:42 921次阅读