Windows 上编译 mebedtls 的鸿蒙库

server/2025/2/24 0:51:21/

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 是将警告当成错误处理,这个也需要关闭,不然编译不了

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 命令行
  • 指定库的输出目录
#!/bin/bash
set -eNDK_PATH=D:/Emuator/v5.0.5/sdk/12/native
CMAKE=$NDK_PATH/build-tools/cmake/bin/cmake
STRIP=$NDK_PATH/llvm/bin/llvm-striparch=arm64-v8arm -rf build$CMAKE -B build -G Ninja \-DOHOS_PLATFORM=OHOS -DOHOS_ARCH=$arch \-DCMAKE_TOOLCHAIN_FILE=$NDK_PATH/build/cmake/ohos.toolchain.cmakecd build
ninja# 创建输出目录
mkdir -p ../libs/$arch# 处理所有三个静态库
for lib in crypto x509 tls; docp ./library/libmbed${lib}.a ../libs/$arch/
done
cd ..

编译过程:

打开 bash,避免使用 powershell,因为 bash 可以看到编译的过程

$ ./build.sh

输出:

编译生成的静态库是在根目录下的 libs 文件夹里

使用:

在其他项目中引用 mbedtls 时,需要同时指定这三个静态库,否则会出现一些函数的符号文件找不到

可以参考下面的写法:

set(BUILD_ARCH "arm64-v8a")include_directories(${SRC_PATH_ROOT}/mbedtls/include
)target_link_libraries(project PUBLIClibace_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,了解下可以使用哪些工具来编译,以及中间可能出现的编译错误,这样能减少时间来完成这件事。


http://www.ppmy.cn/server/170226.html

相关文章

鸿蒙系统-同应用跨设备数据同步(分布式功能)

一. 场景介绍 跨设备数据同步功能(即分布式功能),指将数据同步到一个组网环境中的其他设备。常用于用户应用程序数据内容在可信认证的不同设备间,进行自由同步、修改和查询。 二. 跨设备同步访问控制机制 在进行开发之前&#…

黑客利用 Telegram API 传播新的 Golang 后门

Netskope 的网络安全研究人员发现了一种新型的、具备一定功能但可能仍处于开发阶段的基于 Golang 语言编写的后门程序,该程序利用 Telegram 进行指令与控制(C2)活动。这种恶意软件(Trojan.Generic.37477095)疑似源自俄…

P2865 [USACO06NOV] Roadblocks G 与最短路的路径可重复的严格次短路

题目大意 给出 n n n 个顶点 m m m 条长度在 1 1 1 ~ 5000 5000 5000 的边的图,求图中从 1 到 n n n 与最短路的路径可重复的严格次短路。(严格的含义是,一定比最短路要长,不能相等) 分析 我们先将问题简单化&…

BMS保护板测试仪:电池安全与性能的坚实守护者

在新能源汽车、储能系统、电动工具等电池驱动型产品日益普及的今天,电池的安全性和性能成为了人们关注的焦点。而BMS保护板测试仪作为电池管理系统(BMS)中不可或缺的一部分,为电池的安全运行提供了有力保障。 BMS保护板测试仪的重…

DeepSeek 助力 Vue 开发:打造丝滑的评论系统(Comment System)

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…

命令执行漏洞 Command Execute

命令执行漏洞(Command Injection)是一种安全漏洞,指的是攻击者能够在应用程序的命令行中注入并执行恶意命令。简单来说,就是攻击者可以利用这个漏洞让程序执行自己指定的命令,而不是程序原本应该执行的命令。 举个例子…

51单片机介绍

1、单片机基础知识 1.1、单板机 将CPU芯片、存储器芯片、I/O接口芯片和简单的I/O设备(小键盘、LED显示器)等装配到一块印刷电路板上,再配上监控程序(固化在ROM中),就构成了一台单板微型计算机(简称单板机)。 1.2、单片机 在一片集成电路芯片上集成微处理器、存储器…

MyBatis XML映射文件中的批量插入和更新

一、背景 在数据库操作中,批量插入和更新是一种常见的需求,尤其是在处理大量数据时。MyBatis作为一个强大的持久层框架,提供了灵活的方式来实现这些操作。本文将详细介绍如何使用MyBatis XML映射文件来实现批量插入和更新。这样做的好处是不…