Windows 上编译 mebedtls 的鸿蒙库
mebedtls 地址:https://github.com/Mbed-TLS/mbedtls
准备工作:
- clone mebedtls 仓库到本地(tag: mbedtls-2.26.0)
- 鸿蒙工具链(SDK version: v5.0.5)
编译文件修改:
对 CMakeLists.txt 进行修改,主要是关闭了以下几个选项
- ENABLE_PROGRAMS
- MBEDTLS_FATAL_WARNINGS
- ENABLE_TESTING
ENABLE_PROGRAMS 和 ENABLE_TESTING 是添加程序和测试,因为我们只需要库,所以不需要这些,减少编译文件和时间
MBEDTLS_FATAL_WARNINGS 是将警告当成错误处理,这个也需要关闭,不然编译不了
1 2 3 | option(ENABLE_PROGRAMS "Build mbed TLS programs." OFF) option(MBEDTLS_FATAL_WARNINGS "Compiler warnings treated as errors" OFF) option(ENABLE_TESTING "Build mbed TLS tests." OFF) |
注:CMakeLists.txt 位于根目录下,不需要改其他子文件夹里的 CMakeLists.txt
添加编译脚本(build.sh)
- 指定鸿蒙工具链的路径
- 添加 CMAKE 命令行
- 指定库的输出目录
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/bin/bash set -e NDK_PATH=D:/Emuator/v5.0.5/sdk/12/native CMAKE=$NDK_PATH/build-tools/cmake/bin/cmake STRIP=$NDK_PATH/llvm/bin/llvm-strip arch=arm64-v8a rm -rf build $CMAKE -B build -G Ninja \ -DOHOS_PLATFORM=OHOS -DOHOS_ARCH=$arch \ -DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/ohos.toolchain.cmake cd build ninja # 创建输出目录 mkdir -p ../libs/$arch # 处理所有三个静态库 for lib in crypto x509 tls; do cp ./library/libmbed${lib}.a ../libs/$arch/ done cd .. |
编译过程:
打开 bash,避免使用 powershell,因为 bash 可以看到编译的过程
1 | $ ./build.sh |
输出:
编译生成的静态库是在根目录下的 libs 文件夹里
使用:
在其他项目中引用 mbedtls 时,需要同时指定这三个静态库,否则会出现一些函数的符号文件找不到
可以参考下面的写法:
set(BUILD_ARCH "arm64-v8a") include_directories( ${SRC_PATH_ROOT}/mbedtls/include ) target_link_libraries(project PUBLIC libace_napi.z.so ${SRC_PATH_ROOT}/mbedtls/lib/ohos/${BUILD_ARCH}/libmbedcrypto.a ${SRC_PATH_ROOT}/mbedtls/lib/ohos/${BUILD_ARCH}/libmbedx509.a ${SRC_PATH_ROOT}/mbedtls/lib/ohos/${BUILD_ARCH}/libmbedtls.a )
小结:编译这种库之前看一遍 README,了解下可以使用哪些工具来编译,以及中间可能出现的编译错误,这样能减少时间来完成这件事。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~
2023-02-21 升级 vcpkg 遇到的一些坑
2021-02-21 初级算法 - 约瑟夫圆环
2021-02-21 初级算法 - 冒泡排序和二分法