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

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.Sasm/jump_arm64_aapcs_elf_gas.Sasm/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.lryc.cn/news/466712.html

相关文章:

  • 滚雪球学Redis[6.3讲]:Redis分布式锁的实战指南:从基础到Redlock算法
  • springboot二手汽车交易平台-计算机毕业设计源码82053
  • typescript 中的类型推断
  • linux 隐藏文件
  • 【网络协议栈】Tcp协议(上)结构的解析 和 Tcp中的滑动窗口(32位确认序号、32位序号、4位首部长度、6位标记位、16为窗口大小、16位紧急指针)
  • 手表玻璃盖板视觉贴合
  • 电信和互联网行业数据安全评估师CCRC-DSA人才强基计划
  • MQTTnet 4.3.7.1207 (最新版)使用体验,做成在线客服聊天功能,实现Cefsharp的物联的功能(如远程打开新网址)
  • 将java项目jar包打包成exe服务
  • Django请求响应对象
  • DevExpress中文教程 - 如何在静态SSR模式下使用Blazor Drawer组件?
  • 商汤科技十周年公布新战略,将无缝集成算力、模型及应用
  • 【如何获取股票数据07】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股历史分时MA数据获取实例演示及接口API说明文档
  • Rust语法基础
  • AWS WAF实现API安全防护
  • vue将table转换为pdf导出
  • 20240818 字节跳动 笔试
  • 在Debian上安装向日葵
  • 13.2 Linux_网络编程_UNIX域套接字
  • 10.22 多进程间通信-共享内存、信号量集
  • 输入输出管理器的使用
  • windows连接linux服务器上的jupyter lab
  • golang生成并分析cpu prof文件
  • 【Python爬虫实战】XPath与lxml实现高效XML/HTML数据解析
  • 软件测试学习笔记丨Selenium学习笔记:元素定位与操作
  • 在 HTML 中,<input> 元素支持的事件汇总
  • vue3【实战】 渲染 md 文件(markdown语法 .md后缀的文件)
  • Sora高端制造业WordPress外贸主题
  • windows安装superset及各种问题解决
  • JMeter模拟并发请求