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
回复
举报
5条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

学习一下配置方法

回复
2023-7-4 10:06:55
liurick
liurick

编译和测试运行和L2一样吗

回复
2023-7-4 19:37:37
FlashinMiami
FlashinMiami

一般的闭源动态库会有注释说明使用吗

回复
2023-7-10 10:26:18
碼磚民工
碼磚民工 回复了 liurick
编译和测试运行和L2一样吗

要看版本的,之前都用的hb build, 测试估计都得看日志。

回复
2023-7-10 10:48:29
碼磚民工
碼磚民工 回复了 FlashinMiami
一般的闭源动态库会有注释说明使用吗

别人提供给你,一般都有,不然也不知道怎么调用哈。

回复
2023-7-10 10:49:22
回复
    相关推荐