OpenHarmony 如何使用闭源动态库(L1) 精华
碼磚民工
发布于 2023-7-4 09:01
浏览
6收藏
@toc
简介
之前写过一篇文章关于富设备使用闭源动态库
的文章, 但是OpenHarmony3.0 linux内核的L1集成闭源动态库,在源码中调用跟L2不一样,也是耗费了一点点时间才在源码中调用成功。在本文档中就把这个使用的配置做简单的记录。
富设备闭源动态库的使用和注意事项参考文档:富设备使用闭源动态库
动态库的集成配置
- 动态库工程:
vendor\special\BUILD.gn
import("//build/lite/config/component/lite_component.gni")
copy("testlib") {
sources = [
"//vendor/special/libs/libtestlib.so"
]
outputs = [
"$root_out_dir/usr/lib/{{source_file_part}}"
]
// 动态库的依赖库
deps = [
"//base/security/deviceauth:deviceauth_lite",
"//base/security/deviceauth/frameworks/deviceauth_lite/source:hichainsdk",
"//third_party/mbedtls:mbedtls",
]
}
- 在build\lite\components中的xxxx.json中添加
{
"component": "testlib",
"description": "testlib test",
"optional": "true",
"dirs": [
"vendor/special"
],
"targets": [
"//vendor/special:testlib"
],
"rom": "",
"ram": "",
"output": [
"libtestlib.so"
],
"adapted_kernel": [
"linux"
],
"features": [],
"deps": {
"components": [],
"third_party": []
}
}
- 在vendor***\config.json中的某个subsystem下添加
{
"subsystem": "xxxx",
"components": [
{"component": "testlib", "features": [] }, // 动态库组件
{"component": "testlib_use_demo", "features":[]} // 调用动态库的应用组件
]
}
源码调用
- 源码调用处的
BUILD.gn
配置
import("//build/lite/config/component/lite_component.gni")
executable("testlib_use"){
output_name = "testlib_use"
sources = ["testlib_use.cpp"]
include_dirs = [
"//vendor/special/interface/include", // 动态库对应的头文件目录
...
]
public_deps = [
"//vendor/special:testlib",
]
cflags = []
base_dir = rebase_path("$root_out_dir/usr/lib")
// ldflags是关键
ldflags = [ "-L$base_dir", "-lstdc++", "-ltestlib"]
}
lite_component("testlib_use_demo"){
features = [
":testlib_use",
]
}
分类
已于2023-7-4 09:01:39修改
赞
6
收藏 6
回复
相关推荐
学习一下配置方法
编译和测试运行和L2一样吗
一般的闭源动态库会有注释说明使用吗
要看版本的,之前都用的hb build, 测试估计都得看日志。
别人提供给你,一般都有,不然也不知道怎么调用哈。