• Boost1.74.0交叉编译


    记录一下Boost1.74.0版本的PC上编译及交叉编译情况。


    一、下载

    下载boost源码,这里使用的是1.74.0版本
    下载地址:https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/

    二、Ubuntu编译

    1、安装依赖包

    #安装mpi库
    sudo apt-get install mpi-default-dev
    #支持正则表达式的UNICODE字符集
    sudo apt-get install libicu-dev
    #需要python的话
    sudo apt-get install python-dev
    #安装bzip2 zlib lzma zstd
    sudo apt-get install libbz2-dev zlib1g-dev liblzma-dev libzstd-dev

    2、编译及安装

    这里打算将编译出来的库放在上级目录下的target_pc目录。
    那么在解压出来的boost_1_74_0目录下创建编译脚本build_boost.sh

    #!/bin/sh
    
    COMPILER_PREFIX=$(pwd)/../target_pc
    
    rm -rf project-config.jam*
    ./bootstrap.sh --with-libraries=all --prefix=$COMPILER_PREFIX
    ./b2 install
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在脚本里面制定了编译安装的指定目录,编译生成所有的库,如果要只编译指定的库可以通过参数with-libraries去控制。

    –with-libraries=xxx,yyy

    执行,大概要等个十多分钟,具体看电脑配置

    3、编译结果

    会生成头文件和动态、静态库。
    在这里插入图片描述

    三、交叉编译

    1、安装依赖包

    交叉编译主要的点在于要配置交叉编译工具(gcc)以及指定编译平台的依赖库(sysroot)。
    主要需要有库的是zlibbzip2lzma,如果没有的话可以自行下源码交叉编译后把库放到sysroot目录下。

    2、编译及安装

    这里打算将编译出来的库放在上级目录下的target_cross目录。
    那么在解压出来的boost_1_74_0目录下创建编译脚本build_boost.sh

    #!/bin/sh
    
    #编译工具路径
    QL_CROSSTOOLS=/opt/ql_crosstools/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi
    
    #SYSROOT路径
    QL_SYSROOT=/home/hrx/work/ql-sysroots
    COMPILER_SYSROOT="--sysroot=$QL_SYSROOT"
    
    #编译工具
    COMPILER_CC=$QL_CROSSTOOLS/arm-oe-linux-gnueabi-gcc
    
    #编译选项
    COMPILER_FLAGS="-march=armv7-a -marm -mfpu=neon -mfloat-abi=hard"
    
    #安装位置
    COMPILER_PREFIX=$(pwd)/../target_cross
    
    rm -rf project-config.jam*
    ./bootstrap.sh --with-libraries=all --prefix=$COMPILER_PREFIX
    
    #将gcc替换成交叉编译工具的gcc并添加编译选项和sysroot路径
    sed -i "/using gcc/c using gcc : : $COMPILER_CC $COMPILER_FLAGS $COMPILER_SYSROOT ;" project-config.jam
    
    ./b2 install variant=release abi=aapcs address-model=32 architecture=arm binary-format=elf threading=multi toolset=gcc 
    
    • 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
    3、编译结果

    会生成头文件和动态、静态库。
    在这里插入图片描述

  • 相关阅读:
    用IDEA操作数据库--MySQL
    【NNDL作业】图像锐化后,为什么“蒙上了一层灰色”?
    Java基于springboot+vue的汽车饰品销售购物商城系统 前后端分离
    Drozer安装
    SpringBoot:如何优雅地进行响应数据封装、异常处理?
    漏洞扫描工具AWVS介绍及安装教程
    【工具】【IDE】Qt Creator社区版
    Qt之QtDataVisualization各三维图表的简单使用(含源码+注释)
    实时通信:长轮询与短轮询的对比
    通信原理学习笔记5-1:数字调制——脉冲成形滤波器选择(码间串扰、Nyquist准则、升余弦滚降滤波器、眼图)
  • 原文地址:https://blog.csdn.net/lang523493505/article/details/126240805