一种bionic与musl的共存方法技术

技术编号:34458931 阅读:11 留言:0更新日期:2022-08-06 17:13
本发明专利技术提供一种bionic与musl的共存方法,包括以下步骤:步骤(1).编译基础环境共存;步骤(2).编译框架共存支持,在开源鸿蒙编译框架中添加config/android构建模板,toolchain/android工具链;步骤(3).编译目标编译工具链切换,步骤(4).bionic与musl的运行共存,修改bionic和musl加载器的配置文件。本发明专利技术可使开发者针对同一个编译目标可以根据需求,自由的选择bionic编译或musl编译,可以在同一套代码中通过简单的工具链指定,方便、快捷的完成编译基础库的切换,实现不同编译对象之间的bionic与musl共存。bionic与musl共存。bionic与musl共存。

【技术实现步骤摘要】
一种bionic与musl的共存方法


[0001]本专利技术涉及嵌入式操作系统
,具体为一种bionic与musl的共存方法。

技术介绍

[0002]目前手持终端的嵌入式开源操作系统所使用的Linux内核库,一般为单一的bionic(如:Android)或musl(如:开源鸿蒙)。
[0003]当尝试将安卓和开源鸿蒙运行同一个设备上的时候,开发者即需要调试安卓的系统和它的应用程序,又要调试开源鸿蒙的系统和它的应用程序。就会遇到bionic与musl编译、运行的共存问题。
[0004]所以系统只能提供一种Linux内核库(bionic和musl)依赖的编译和运行,对开发者会造成困难。

技术实现思路

[0005]本专利技术所解决的技术问题在于提供一种bionic与musl的共存方法,以解决上述
技术介绍
中提出的问题。
[0006]本专利技术所解决的技术问题采用以下技术方案来实现:一种bionic与musl的共存方法,包括以下步骤:
[0007]步骤(1).编译基础环境共存;
[0008]步骤(2).编译框架共存支持,在开源鸿蒙编译框架中添加config/android构建模板,toolchain/android工具链;
[0009]步骤(3).编译目标编译工具链切换,在编译对象被deps依赖时,默认使用musl工具链,在名称后面使用(${android_toolchain})指定bionic编译工具链,可以切换到bionic编译;
[0010]步骤(4).bionic与musl的运行共存,修改bionic和musl加载器的配置文件。
[0011]所述步骤(1)中通过json config配置文件结合python脚本,从Android源码编译环境中收集bionic编译依赖的信息用以构建编译基础环境。
[0012]所述步骤(4)中编译时,对于基于不同基础库的程序,分别编译到不同的目录下,将基于bionic编译的程序放到/system/lib{64}下,而基于musl的程序放到/system/lib{64}/musl下。
[0013]所述步骤(4)中对于可执行文件,可以不用区分不同的目录,无论是基于musl库还是bionic库,完全可以放在同一个目录下面。
[0014]所述步骤(4)中修改bionic和musl加载器的配置文件,分别从上述的不同路径下查找动态库,确保配置文件中不存在相同的目录。
[0015]与现有技术相比,本专利技术的有益效果是:本专利技术可使开发者针对同一个编译目标可以根据需求,自由的选择bionic编译或musl编译,可以在同一套代码中通过简单的工具链指定,方便、快捷的完成编译基础库的切换,实现不同编译对象之间的bionic与musl共
存。也可以同时使用bionic和musl编译同一个编译对象,实现同一个编译对象的bionic与musl共存。
[0016]另外,实现了bionic与musl编译对象,在运行层面的共存,可以实现Android(bionic)与开源鸿蒙(musl)功能的直接累加移植。
附图说明
[0017]图1为本专利技术的bionic与musl的编译共存流程示意图。
[0018]图2为本专利技术的bionic与musl的运行共存流程示意图。
具体实施方式
[0019]为了使本专利技术的实现技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本专利技术,在本专利技术的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以两个元件内部的连通。
[0020]实施例1
[0021]如图1、图2所示,一种bionic与musl的共存方法,包括以下步骤:
[0022]步骤(1).编译基础环境共存;
[0023]步骤(2).编译框架共存支持,在开源鸿蒙编译框架中添加config/android构建模板,toolchain/android工具链;
[0024]步骤(3).编译目标编译工具链切换,在编译对象被deps依赖时,默认使用musl工具链,在名称后面使用(${android_toolchain})指定bionic编译工具链,可以切换到bionic编译;
[0025]步骤(4).bionic与musl的运行共存,修改bionic和musl加载器的配置文件。
[0026]所述步骤(1)中通过json config配置文件结合python脚本,从Android源码编译环境中收集bionic编译依赖的信息用以构建编译基础环境。
[0027]实施例2
[0028]如图1、图2所示,一种bionic与musl的共存方法,包括以下步骤:
[0029]步骤(1).编译基础环境共存;
[0030]步骤(2).编译框架共存支持,在开源鸿蒙编译框架中添加config/android构建模板,toolchain/android工具链;
[0031]步骤(3).编译目标编译工具链切换,在编译对象被deps依赖时,默认使用musl工具链,在名称后面使用(${android_toolchain})指定bionic编译工具链,可以切换到bionic编译;
[0032]步骤(4).bionic与musl的运行共存,修改bionic和musl加载器的配置文件。
[0033]所述步骤(4)中编译时,对于基于不同基础库的程序,分别编译到不同的目录下,将基于bionic编译的程序放到/system/lib{64}下,而基于musl的程序放到/system/lib{64}/musl下。所述步骤(4)中对于可执行文件,可以不用区分不同的目录,无论是基于musl库还是bionic库,完全可以放在同一个目录下面。所述步骤(4)中修改bionic和musl加载器
的配置文件,分别从上述的不同路径下查找动态库,确保配置文件中不存在相同的目录。
[0034]bionic与musl编译共存是在开源鸿蒙GN编译环境中实现的,基于开源鸿蒙编译框架,兼容bionic编译,实现bionic/musl切换与并存。
[0035]bionic与musl的运行共存:bionic库与musl库分别有自己的加载器,bionic的加载器是linker或者linker64;musl的加载器是ld

musl

{arch}.so.1,这里的arch指芯片架构,如aarch64,arm等。
[0036]对于一个依赖动态库的可执行文件,在其program headers中都会指定其program interpreter(即可以理解为加载器),程序运行的时候,由内核先启动加载器,由加载器处理好动态库的加载和重定向的动作。本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种bionic与musl的共存方法,其特征在于:包括以下步骤:步骤(1).编译基础环境共存;步骤(2).编译框架共存支持,在开源鸿蒙编译框架中添加config/android构建模板,toolchain/android工具链;步骤(3).编译目标编译工具链切换,在编译对象被deps依赖时,默认使用musl工具链,在名称后面使用(${android_toolchain})指定bionic编译工具链,可以切换到bionic编译;步骤(4).bionic与musl的运行共存,修改bionic和musl加载器的配置文件。2.根据权利要求1所述的一种bionic与musl的共存方法,其特征在于:所述步骤(1)中通过json config配置文件结合python脚本,从Android源码编译环境中收集bionic编译依...

【专利技术属性】
技术研发人员:ꢀ五一IntClG零六F八四一
申请(专利权)人:南京盐木智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1