当前位置: 首页 > news >正文

编译 wolfssl 库

wolfssl github: https://github.com/wolfSSL/wolfssl


  • 编译 .lib 或者 .dll

wolfssl 很好的提供了 win32 的工程=》sln 文件

这样就不用折腾 CMakeLists 文件了,使用 Visual Studio 打开 sln 文件后,设置好 Static 编译库即可,开箱即用


  • 编译 .a 文件

如果需要编译 .a 库,可以借助 MINGW64 终端

因为 wolfssl 已经提供了 CMakeLists.txt,所以编译起来还是省事不少

在 MINGW64 终端中 cd 到 wolfssl/src,执行以下命令行:

cmake -S . -B build -G Ninja -DCMAKE_FLAGS="-DWOLFSSL_CRYPT_ONLY:BOOL=ON -DWOLFSSL_CRYPT_TESTS:BOOL=OFF -DWOLFSSL_DSA:BOOL=ON -DWOLFSSL_ECC:BOOL=OFF -DWOLFSSL_RSA:BOOL=OFF -DWOLFSSL_FILESYSTEM:BOOL=OFF -DWOLFSSL_ASYNC_THREADS:BOOL=OFF -DWOLFSSL_OLD_NAMES:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF"

接着 ninja,可能会提示缺少 <stdint.h>

可以在源码中添加以下代码,

#if defined(__MINGW64__)
#include <stdint.h>
#endif

这样重新编译后就成功了

不过这样编译出的库名字有点奇葩,会编译出 libwolfssl.dll.a 的库

故可以采用 sh 脚本方法一步到位,也不会报缺少头文件的错误

build_mingw64.sh

#!/bin/bash
set -eCMAKE_FLAGS="-DWOLFSSL_CRYPT_ONLY:BOOL=ON -DWOLFSSL_CRYPT_TESTS:BOOL=OFF -DWOLFSSL_DSA:BOOL=ON -DWOLFSSL_ECC:BOOL=OFF -DWOLFSSL_RSA:BOOL=OFF -DWOLFSSL_FILESYSTEM:BOOL=OFF -DWOLFSSL_ASYNC_THREADS:BOOL=OFF -DWOLFSSL_OLD_NAMES:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF"mkdir -p package/ming64/include
mkdir -p package/ming64/librm -rf buildcmake -S . -B build -G Ninja $CMAKE_FLAGS
cd build
ninja
cp -r wolfssl ../package/ming64/include/
cp -r libwolfssl.a ../package/ming64/lib/
cd ..rm -rf build


另附鸿蒙库的编译脚本:

#!/bin/bash
set -eNDK_PATH=~/Library/OpenHarmony/sdk/native/4.0
CMAKE=~/Library/OpenHarmony/sdk/native/4.0/build-tools/cmake/bin/cmakeCMAKE_FLAGS="-DWOLFSSL_CRYPT_ONLY:BOOL=ON -DWOLFSSL_CRYPT_TESTS:BOOL=OFF -DWOLFSSL_DSA:BOOL=ON \-DWOLFSSL_ECC:BOOL=OFF -DWOLFSSL_RSA:BOOL=OFF -DWOLFSSL_FILESYSTEM:BOOL=OFF \-DWOLFSSL_ASYNC_THREADS:BOOL=OFF -DWOLFSSL_OLD_NAMES:BOOL=OFF -DBUILD_SHARED_LIBS:BOOL=OFF"arch=arm64-v8arm -rf build$CMAKE -B build -G Ninja -DOHOS_STL=none -DOHOS_PLATFORM=OHOS \-DCMAKE_TOOLCHAIN_FILE="${NDK_PATH}/build/cmake/ohos.toolchain.cmake" \-DCMAKE_C_FLAGS="-Qunused-arguments" $CMAKE_FLAGS -DOHOS_ARCH=$arch
cd build
ninjamkdir -p ../package/ohos/include/$arch
cp -r wolfssl ../package/ohos/include/$arch/
mkdir -p ../package/ohos/lib/$arch
mv libwolfssl.a ../package/ohos/lib/$arch/cd ..

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Python中的比较运算符:掌握数据世界的较量艺术
  • IPv6 over IPv4隧道概述
  • 没及格,我猜这套华为软件测试面试题没几个人能及格
  • 景商场双目客流量摄像机,具有100°宽视角,识别范围广
  • 模拟实现STL中的unordered_map和unordered_set
  • 图神经网络实战(19)——异构图神经网络
  • Vue3-win7搭建vue3环境
  • html快速入门
  • Thinkphp6 反序列化漏洞分析
  • 8.22-docker的部署及其使用
  • 负载均衡详解
  • [C语言]-基础知识点梳理-编译、链接、预处理
  • 计算机组成与设计 - 1.7 功耗墙 - 1.8 单处理器向多处理器的转变 - 1.9 基准
  • FL Studio24.1.1.4239中文版注册机+永久激活码注册码
  • Java-使用HashMap压缩重复数据量以减少堆内存溢出的概率
  • Angular2开发踩坑系列-生产环境编译
  • angular2开源库收集
  • CentOS 7 修改主机名
  • ES10 特性的完整指南
  • JavaScript实现分页效果
  • Java的Interrupt与线程中断
  • java第三方包学习之lombok
  • mongo索引构建
  • Mysql数据库的条件查询语句
  • node 版本过低
  • PHP 小技巧
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 从零开始在ubuntu上搭建node开发环境
  • 从重复到重用
  • 入门级的git使用指北
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 中文输入法与React文本输入框的问题与解决方案
  • 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #{}和${}的区别?
  • (12)Hive调优——count distinct去重优化
  • (2)STL算法之元素计数
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Matlab)使用竞争神经网络实现数据聚类
  • (超详细)语音信号处理之特征提取
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (切换多语言)vantUI+vue-i18n进行国际化配置及新增没有的语言包
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (实战篇)如何缓存数据
  • (转)关于pipe()的详细解析
  • ***利用Ms05002溢出找“肉鸡
  • .apk文件,IIS不支持下载解决
  • .Net Redis的秒杀Dome和异步执行
  • .net 反编译_.net反编译的相关问题
  • @RequestBody与@RequestParam
  • [].slice.call()将类数组转化为真正的数组
  • []新浪博客如何插入代码(其他博客应该也可以)
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试