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

linux下编译鸿蒙版boost库

我在上一篇文章中介绍了curl和openssl的编译方式(linux下编译鸿蒙版curl、openssl-CSDN博客),这篇再介绍一下boost库的编译。

一.环境准备

1.鸿蒙NDK

下载安装方式可以参考上篇文章,完毕后NDK的路径为:/home/ubuntu/develop/ohos-sdk-5.0/linux

2.下载boost库

我们可以在 Boost Version History查找自己需要的版本下载,我这边下载的是2020年的版本1.75.0。

下载完毕后解压到开发目录:/home/ubuntu/thirdparty/boost_1_75_0

二.编译流程

1.生成boost编译工具

在boost目录下执行 bootstrap.sh,编译完成后生成编译工具 b2,以及要用到的 project-config.jam

2.修改工程编译配置

vim project-config.jam

将配置文件内容清空,替换成如下配置:

modules.poke : NO_BZIP2 : 1 ;
# 设置ndk的路径
OHOS_NDK = /home/ubuntu/develop/ohos-sdk-5.0/linux ;
# 设置编译参数
using clang : ohos5.0 :
    $(OHOS_NDK)/native/llvm/bin/clang++ :
    <archiver>$(OHOS_NDK)/native/llvm/bin/llvm-ar
    <ranlib>$(OHOS_NDK)/native/llvm/bin/llvm-ranlib
    <compileflags>--sysroot=$(OHOS_NDK)/native/sysroot
    <compileflags>--target=aarch64-linux-ohos
    <compileflags>-fdata-sections
    <compileflags>-ffunction-sections
    <compileflags>-funwind-tables
    <compileflags>-fstack-protector-strong
    <compileflags>-no-canonical-prefixes
    <compileflags>-fno-addrsig
    <compileflags>-Wa,--noexecstack
    <compileflags>-D__MUSL__ ;

project : default-build <toolset>clang-ohos5.0 ;

# List of --with-<library> and --without-<library> options.
# If left empty, all libraries will be built.
# Options specified on the command line completely override this variable.
# 这边可以配置需要编译哪些库,不编译哪些库,我这边注释掉之后,就会编译所有库
#libraries = --with-filesystem --with-thread --with-system --with-regex --with-program_options --with-timer --with-chrono --with-iostreams --with-exception ;

这块配置是编译成功与否的关键,大家也可以自行增删需要的编译选项

3.修改 context 库编译配置

vim libs/context/build/Jamfile.v2

添加新的配置内容:

alias asm_sources
   : asm/make_arm64_aapcs_elf_gas.S
     asm/jump_arm64_aapcs_elf_gas.S
     asm/ontop_arm64_aapcs_elf_gas.S
   : <abi>sysv
     <address-model>64
     <architecture>arm
     <binary-format>elf
     <toolset>clang-ohos
   ;

位置如图所示:

这边需要注意下,如果不修改该配置的话,在编译时会报 error: No best alternative for libs/context/build/asm_sources 的错误。

另外还有一种方式可以解决这个错误,在不修改配置的情况下,我们可以在 b2 的编译命令行中加入编译参数 abi=aapcs

./b2 abi=aapcs ...

4.编译

./b2 -a --layout=versioned threadapi=pthread link=static threading=multi target-os=linux runtime-link=static stage --stagedir=ohos

我这边编译的是多线程静态库,大家可以根据需要自行调整编译参数,参数说明可以参考 ./b2 --help

三.编译结果

编译结束后,结果生成在 ohos/lib 下。其中有些库可能会编译失败,如 boost_python,关于这些特殊库的编译大家可以自行查找资料,我这边就不介绍了。


http://www.kler.cn/a/350544.html

相关文章:

  • Spring Boot项目集成Redisson 原始依赖与 Spring Boot Starter 的流程
  • 医院挂号就诊系统设计与实现(代码+数据库+LW)
  • Linux-性能分析top
  • 周末总结(2024/01/18)
  • PCL K4PCS算法实现点云粗配准【2025最新版】
  • SpringBoot项目打war包要点
  • 【2021】知识图谱导论(陈华钧)——阅读思考与笔记
  • 常见网络协议的介绍、使用场景及 Java 代码样例
  • 《深度学习》循环神经网络RNN 结构及原理解析
  • 应急响应处置流程Windows篇
  • LLM - 使用 Neo4j 可视化 GraphRAG 构建的 知识图谱(KG) 教程
  • GO 语言协程知识点学习笔记
  • 进程通信——管道
  • 中国平安蝉联2024“金融业先锋30”第一名 获金融业ESG最高五星评级
  • HashMap 扩容流程详解
  • 域内信息收集和攻击思路
  • React入门(1)——我的第一个React.js项目
  • conda环境打包环境、迁移环境
  • 论文阅读笔记-Incorporating Copying Mechanism in Sequence-to-Sequence Learning
  • Java-IO流使用场景
  • 单目相机和双目相机定位
  • SpringBoot整合分页助手
  • 富士胶片人像汽车照片Lr调色教程,手机滤镜PS+Lightroom预设下载!
  • Unity 3d 鼠标设置的问题——隐藏/显示鼠标、锁定/解锁/限制鼠标、自定义鼠标形状
  • Spring Boot助力B2B医疗平台病历数据交换
  • 智能网联汽车安全隐患,如何化解?