OpenHarmony应用集成和固件集成中C库差异化分析

这篇具有很好参考价值的文章主要介绍了OpenHarmony应用集成和固件集成中C库差异化分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

OpenHarmony中,三方库的使用有两种方式:

一、固件集成

三方库经由OpenHarmony构建框架编译出的动态库或静态库,打包到rom中

二、应用集成

三方库经由IDE(通过IDE中的cmake)编译出的动态库或静态库,打包到hap包中

有时候我们想直接使用三方库,省略编译构建这个过程,直接将固件集成方式构建出来的二进制动态库在IDE上面使用。在使用过程中我们会发现,有时候编译工程,在工程链接三方库的阶段出现找不到符号导致编译失败的问题。

问题分析

问题现象

使用固件集成方式构建出来的动态库,直接在IDE上编译链接时,出现如下图现象

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

如图所示,提示ld.lld: error: undefined symbol: print(std::__n1::basic_string<char, std::__n1::char_traits>, std::__n1::allocator >)

分析动态库

由上面现象中提示链接时没有找到对应函数符号,我们分析一下动态库的符号表,查看是否存在该符号

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

通过查看动态库的符号表,我们可以发现存在该函数符号,但是参数中的变量命名空间有所区别,IDE中是std::__n1,而固件集成方式编译出来的动态库是std::__h,从这里看出可能是基础库libc++.so或libc.so有所差异

分析基础库差异

我们对比一下IDE的SDK和OpenHarmony的sdk中的基础库(libc++.so/libc.so)

首先对比libc++.so的符号表(左:IDE中的libc++,右:OpenHarmony中的libc++)

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

从上图可以看出函数的命名空间被隔离开了,并且部分函数不一致,是新增的

对比libc.so的符号表(左:IDE中的libc,右:OpenHarmony中的libc)

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

从上图可以看出部分函数有新增

总结

通过以上分析出来的现象,和工具链相关的负责人沟通,命名空间隔离是由工具链这边自己进行隔离的,因为系统侧和ndk侧两边发布版本的节奏不一致,版本不同,如果强行统一会导致api不兼容,数据结构差异等问题。所以固件集成方式构建的库和应用集成构建的库不可以混用。

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

OpenHarmony应用集成和固件集成中C库差异化分析,鸿蒙,移动开发,Harmony OS,c语言,开发语言,harmonyos,Openharmony,移动开发,鸿蒙开发,鸿蒙系统文章来源地址https://www.toymoban.com/news/detail-851287.html

到了这里,关于OpenHarmony应用集成和固件集成中C库差异化分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 打通谷歌办公软件 Bard与ChatGPT走差异化道路

    时隔半年,曾被ChatGPT吊打的Bard发布重磅更新,打通了Gmail、Docs等谷歌办公应用全家桶的数据,支持一键转存AIGC内容至谷歌系的邮箱、文档、表格等应用程序中,还在对话页面加入“Google it”自核实功能,避免对话机器人的幻觉Bug。 事实上,Bard上线后一直在迭代,几乎每个

    2024年02月07日
    浏览(32)
  • 万物智联下,腾讯云IoT的差异化发展之路“新”在何处?

    导语 | 科技向善是头部公司当仁不让的壮举,物联网被认为是全球新一轮科技革命与产业变革的核心驱动,而受益于良好的外部环境及市场前景,物联网产业在今后几年将继续保持快速增长。那么物联网当前的发展现状到底如何?物联网的最新趋势又是什么?本文由腾讯云

    2023年04月19日
    浏览(44)
  • Rokid AR Lite空间计算套装发布,中国空间计算踏上差异化领先之路

    动动手指、动动眼睛就可以“操控一切”,这种颇具科幻感、未来感的交互方式,令许多人感叹“未来已来”。而这令人震撼的变革背后,正是空间计算技术的迅猛崛起与广泛应用,使得这种曾经只存在于想象中的交互方式,如今正逐步成为现实。 4月20日,中国AR创新力量代

    2024年04月25日
    浏览(39)
  • 是否对内部网络的服务器和工作站实施了差异化的访问策略?

    随着企业规模的不断扩大和网络技术的不断演进, 内部网络面临着日益严重的安全问题. 其中主要包括恶意软件入侵、数据泄露以及未经授权的用户访问等. 因此实施一套有效的**差异化访问策略**对于保障企业内部网络安全至关重要.本文将对这一问题进行分析并提出相应的解

    2024年02月22日
    浏览(47)
  • Web端3D开发工具包HOOPS,助力建筑服务商6个月打造差异化云端产品!

    我们公司的主要业务是为建筑行业的客户提供集成解决方案和服务,近年来,随着建筑行业对碳排放量的测试和管理越来越重视,建筑行业的客户也对碳排放计算工具的要求更高,他们不再满足仅在本地平台部署该工具,还希望能在云端部署,实现在建筑工地连网即用、多地

    2024年01月18日
    浏览(60)
  • OpenHarmony—4.0图形HDI基础适配及点屏差异分析

    1.1 进程数量变化 新增加两个uhdf进程。allocator_host进程及composer_host进程。 删除了disp_gralloc_host 进程,并使用allocator_host替换。 uhdf添加进程配置如下: hdf_config/uhdf/device_info.hcs 1.2 拉起关系变化 composer 以前版本composer由render_service通过单例拉起,现在通过composer service拉起接口实现

    2024年02月22日
    浏览(37)
  • 华为新发布的鸿蒙与目前华为手机的鸿蒙系统有什么差异,OpenHarmony、HarmonyOS、HarmonyOS NEXT的区别详解

    最近工作中需要进行鸿蒙适配,一开始我有个疑问,今年新发布的鸿蒙系统,与目前华为手机使用的鸿蒙系统有什么差异?为什么要专门进行适配?如果大家也有类似的疑问,看完这篇就明白了。 今年华为在鸿蒙生态千帆启航仪式上正式发布了鸿蒙原生操作系统——HarmonyO

    2024年04月17日
    浏览(59)
  • OpenHarmony应用开发——在标准OpenHarmony上运行应用-标准OpenHarmony工程设置

            前面我们创建了一个工程并使其在HarmonyOS系统上运行,本文我们来阐述一下如何在标准的OpenHarmony开发板或系统上运行。         首先,打开Settings.         将SDK选择为OpenHarmony,第一次选择路径应该为空,随后点击Edit。         选择好存储路径后,随后点击

    2024年02月04日
    浏览(39)
  • 【差异表达分析】差异表达分析标准不标准化这是一个问题(含其其它报错问题)

    在一开始学习基因差异表达分析时,老师就强调用raw count做差异分析,相关文献和资料我也保存了不少,我之前弄清楚log2/cpm与count fpkm等不是在一个水平上讨论的问题,但是具体用的时候还是要栽个跟头才能印象深刻。 我在复现这篇推文时老文新看,今天来看看两个数据集的

    2024年02月10日
    浏览(45)
  • 差异性分析傻瓜版

    path1输入你的第一个Excel   path2输入你的第二个Excel   DEG.dig - function(path1,path2) {      require(xlsx)      require(tidyverse)      require(limma)      require(edgeR)      E- read.xlsx (path1,sheetIndex = 1,header = 1) %% column_to_rownames(var =\\\"NA.\\\" )      type- read.xlsx (path2,sheetIndex = 1,header = 1)  %% select(t

    2024年02月13日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包