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
    +关注

    关注

    27

    文章

    1433

    浏览量

    75689
  • 移植
    +关注

    关注

    1

    文章

    367

    浏览量

    27853
  • 编译
    +关注

    关注

    0

    文章

    613

    浏览量

    32371
  • 鸿蒙
    +关注

    关注

    55

    文章

    1597

    浏览量

    42115
  • OpenHarmony
    +关注

    关注

    23

    文章

    3247

    浏览量

    15159

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

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

收藏 人收藏

    评论

    相关推荐

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

    自己在网上搜了下相关资料,能把第三方EXE内嵌进入容器里,但是有个问题,这个第三方软件必须手动拖到容器正中间,手动最大化。请问有什么方法可以自动实现吗? 下图是我内嵌的POLL 软件。如图!
    发表于 04-18 14:26

    鸿蒙OS开发学习:【尺寸适配实现】

    鸿蒙开发中,尺寸适配是一个重要的概念,它可以帮助我们在不同屏幕尺寸的设备上正确显示和布局我们的应用程序。本文将介绍如何在鸿蒙开发中实现尺寸适配的方法。
    的头像 发表于 04-10 16:05 615次阅读
    <b class='flag-5'>鸿蒙</b>OS开发学习:【尺寸<b class='flag-5'>适配</b>实现】

    鸿蒙开发实例【使用高德地图鸿蒙SDK】(一)

    使用高德地图鸿蒙SDK的快速入门指南
    的头像 发表于 03-22 16:59 221次阅读
    <b class='flag-5'>鸿蒙</b>开发实例【使用高德地图<b class='flag-5'>鸿蒙</b>SDK】(一)

    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 372次阅读
    使用 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

    博通PCIe存储适配器入门指南

    电子发烧友网站提供《博通PCIe存储适配器入门指南.pdf》资料免费下载
    发表于 08-21 15:02 0次下载
    博通PCIe存储<b class='flag-5'>适配</b>器入门<b class='flag-5'>指南</b>

    如何在蜂鸟处理器核的基础上扩展第三方指令?

    想咨询一下如何在蜂鸟处理器核的基础上扩展第三方指令,使用户自定义指令,并如何构建机器码等内容? 我看了胡老师的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