【鸿蒙南向开发】如何移植一个C++开源库

本节我们讨论下如果引用一个开源三方库,引入 OpenHarmony 编译并在设备上运行。

1. 开源库结构

我们选取比较简单的 linux-logo 开源库(库地址为:https://github.com/deater/linux_logo),

. ├── configure ├── contrib ├── libsysinfo-0.3.0 ├── linux_logo.c ├── LINUX_LOGO.FAQ ├── linux_logo.h ├── ll_asm ├── load_logo.c ├── load_logo.h ├── load_logos.h ├── logo_config ├── logo_config.BSD ├── logo_config.Irix ├── logo_config.Solaris ├── logos ├── logo_types.h ├── parse_logos ├── parse_logos.c ├── po ├── tests ​

在 linux 下的运行步骤和结果

●目录 ls

在这里插入图片描述

●配置 ./configure

在这里插入图片描述

●编译,运行 make&./linux_logo

在这里插入图片描述

3. 移植到 OpenHarmony 下进行编译运行

移植到 OpenHarmony 需要在三方库里增加文件夹和 gn 文件。OpenHarmony 里三方库的位置在[代码目录]/third_party 位置

我们可以在三方库里创建文件夹:linuxlogo,然后在 linuxlogo 里创建 BUILD.gn 文件。接下来我们需要拷贝第三方 linuxlog 文件到此文件夹内。然后我们需要阅读三方库的 Makefile 文件。以下是基本的 makefile 的规则:

●makefile 的规则

target... : prerequisites ...
          command
          ...
         -----------------------------------------------------------------

●target 就是一个目标文件,可以是 Object File,也可以是执行文件。还可以是一个动作/伪目标/标签(Label),如 clean。

  • prerequisites就是,要生成那个target所需要的文件或是目标。

  • command也就是make需要执行的命令。(任意的Shell命令)


这是一个文件的依赖关系,target 这一个或多个的目标文件依赖于 prerequisites 中的文件,其生成规则定义在 command 中。在定义好依赖关系后,后续的那一行定义了如何生成目标文件的操作系统命令,make 会一层又一层地去找文件的依赖关系,直到最终编译出第一个目标文件。这就是整个 make 的依赖性。

GNU 的 make 工作时的执行步骤如下:(想来其它的 make 也是类似)

\1. 读入所有的 Makefile。

\2. 读入被 include 的其它 Makefile。

\3. 初始化文件中的变量。

\4. 推导隐晦规则,并分析所有规则。

\5. 为所有的目标文件创建依赖关系链。

\6. 根据依赖关系,决定哪些目标要重新生成。

\7. 执行生成命令。

1-5 步为第一个阶段,6-7 为第二个阶段。第一个阶段中,如果定义的变量被使用了,那么,make 会把其展开在使用的位置。但 make 并不会完全马上展开,如果变量出现在依赖关系的规则中,那么仅当这条依赖被决定要使用了,变量才会在其内部展开。规则包含两个部分,一个是依赖关系,一个是生成目标的方法。

查看 makefile(内部有一些关键命令的注释)

Makefile 会告诉 make 命令做什么(通常是如何编译和链接程序)。

路径: /../Makefile

-include Makefile.default

PROGNAME = linux_logo

#ifeq ($(OS),IRIX64) 
#   LDFLAGS += -lintl
#endif

ifeq ($(OS),FreeBSD)
    LDFLAGS += -lintl
endif

#
# Installation location
#
INSTALL_BINPATH = $(DESTDIR)$(PREFIX)/bin
INSTALL_MANPATH = 
### Ubuntu南向开发教程和资源 #### 安装与配置开发环境 对于Ubuntu系统的南向开发,首要任务是建立一个稳定的工作环境。根据已有经验,在安装Ubuntu作为操作系统的过程中遇到的问题较少,特别是版本20.04.4 LTS表现出了良好的稳定性[^1]。这为后续的开发工作奠定了坚实的基础。 为了更好地支持南向设备接入和服务部署,建议开发者熟悉Linux命令行操作以及基本的网络设置方法。此外,还需确保已正确安装必要的编译工具链和其他依赖项,比如GCC、Make等构建工具,这些可以通过包管理器apt-get轻松获取并安装。 #### 开发框架的选择 针对具体的南向应用场景,可以选择不同的API接口和技术栈来实现数据采集、协议解析等功能模块。如果目标平台涉及物联网(IoT),那么MQTT可能是较为理想的消息传输协议之一;而对于更底层硬件控制,则可能需要用到诸如libusb这样的来进行USB通信编程。 #### 学习路径推荐 一份详尽的学习指南应当覆盖从基础概念到高级特性的各个层面。考虑到HarmonyOS NEXT所提供的全面技术支持文档涵盖了众多关键技术领域,包括但不限于ArkTS、ArkUI开发组件、Stage模型等方面的内容[^2],这对于理解如何利用Ubuntu进行跨平台应用程序的设计有着重要的指导意义。 ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential git cmake libssl-dev -y ``` 上述脚本展示了怎样通过APT更新现有软件包列表,并安装一些常用的开发工具集,如build-essential用于提供C/C++编译环境,git便于源码管理和协作开发,cmake则是现代C++项目的自动化构建系统,而libssl-dev提供了SSL/TLS加密功能的支持。 #### 实践案例分享 实际项目实践中往往能积累更多宝贵的经验教训。参与开源社区贡献代码不仅有助于个人技能提升,也能让开发者接触到最前沿的技术趋势和发展动态。例如加入OpenHarmony社区,参与到具体子系统的维护工作中去,能够加深对整个生态体系的理解程度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值