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

    文章

    2159

    浏览量

    79863
  • 移植
    +关注

    关注

    1

    文章

    401

    浏览量

    28747
  • 编译
    +关注

    关注

    0

    文章

    680

    浏览量

    34218
  • 鸿蒙
    +关注

    关注

    60

    文章

    2643

    浏览量

    44242
  • OpenHarmony
    +关注

    关注

    30

    文章

    3858

    浏览量

    18795

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    HarmonyOS入门指南

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

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

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

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

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

    Get这个秘籍,鸿蒙原生应用页面滑动丝滑无比

    “OpenHarmony官网”,点击“开发者”——>“三方中心仓”——>搜索“nodepool”,下载使用。 更多关于“nodepool”的详细信息和使用指南,请访问官网链接
    发表于 03-06 14:41

    鸿蒙文件传输三方上线开源鸿蒙社区 十行代码实现大文件高速传输

    近日,华为在OpenHarmony社区上线了“super_fast_file_trans”文件传输三方(以下简称“SFFT”)。这一三方的推出,为开发者提供了一套支持大文件多线程并
    发表于 03-06 10:29

    EE-303:将VisualDSP线程安全与第三方RTOS配合使用

    电子发烧友网站提供《EE-303:将VisualDSP线程安全与第三方RTOS配合使用.pdf》资料免费下载
    发表于 01-07 14:09 ?0次下载
    EE-303:将VisualDSP线程安全<b class='flag-5'>库</b>与第<b class='flag-5'>三方</b>RTOS配合使用

    鸿蒙原生页面高性能解决方案上线OpenHarmony社区 助力打造高性能原生应用

    NEXT的原生页面高性能解决方案,从页面滑动、跳转及应用冷启动等关键环节,为开发者提供全面的支持。目前,这些解决方案均已上线OpenHarmony开源社区,可在OpenHarmony三方中心仓进行搜索,欢迎开发者多多使用和共建,打造更极致性能的
    发表于 01-02 18:00

    AKI跨语言调用神助攻C/C++代码迁移至HarmonyOS NEXT

    ,AKI已上线OpenHarmony开源社区,“OpenHarmony三方中心仓网站”搜索“AKI”即可了解体验。期待更多厂商和开发者下载使用并参与共建,打造更高性能的鸿蒙应用,共同推进鸿蒙
    发表于 01-02 17:08

    鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II

    : path: \'../../modules/me\' support: path: \'../../modules/support\' 三方鸿蒙适配 编辑 pubspec.
    发表于 12-26 14:59

    三方检测机构该如何提升核心竞争力?

    在国家“一带一路”和“智能制造2025”等政策的引领下,面对竞争日益激烈的国际环境,作为全球最大的制造业国家,中国的检测行业正经历着迅猛的发展,成为全球增长最快、潜力最大的市场之一。 第三方检测逐渐
    的头像 发表于 12-17 15:44 ?908次阅读
    第<b class='flag-5'>三方</b>检测机构该如何提升核心竞争力?

    鸿蒙Flutter实战:05-使用第三方插件

    使用的第三方插件,其底层以的没有适配鸿蒙,则需要通过overrider配置其鸿蒙化的替代插件,否则会在运行时报错。如下面所示: ```y
    发表于 10-22 21:54

    瑞芯微RK3566鸿蒙开发板Android11修改第三方输入法为默认输入法

    本文适用于触觉智能所有支持Android11系统的开发板修改第三方输入法为默认输入法。本次使用的是触觉智能的Purple Pi OH鸿蒙开源主板,搭载了瑞芯微RK3566芯片,类树莓派设计,是Laval官方社区主荐的一款鸿蒙开发
    的头像 发表于 09-24 09:43 ?1171次阅读
    瑞芯微RK3566<b class='flag-5'>鸿蒙</b>开发板Android11修改第<b class='flag-5'>三方</b>输入法为默认输入法

    维天地低代码开发平台助力第三方质检行业数据可视化

    三方检验是由独立于买卖双方利益之外的第三方机构(例如专业的监督检验机构)执行的,这些机构以公正、公平、权威的非当事人身份,依据双方共同认可的法律、标准和合同等进行商品的符合性检验和认证活动
    的头像 发表于 08-09 13:59 ?635次阅读
    <b class='flag-5'>三</b>维天地低代码开发平台助力第<b class='flag-5'>三方</b>质检行业数据可视化