交叉编译 mpfr

交叉编译 mpfr

1 概述

logo

MPFR(Multiple Precision Floating-Point Reliable)是一个用于高精度浮点数计算的开源库,它提供了高精度的浮点数运算和函数库,适用于需要处理大数或高精度数值计算的场景。广泛应用于科学计算、金融计算、数据加密、密码学等领域,如数值模拟、数据分析、物理计算、利率计算、风险评估以及加密算法中的高精度计算等。提供了丰富的数学函数库,包括基本的算术运算、三角函数、对数函数、指数函数等,方便用户进行各种数学计算。

官方网址: https://www.mpfr.org/

MPFR 基于 GMP 库,需要先交叉编译了 GMP 库(参考「交叉编译 gmp」)之后再对 MPFR 库进行编译。不然,在调用 ./configure 指令时会报以下错误:

checking for gmp.h... no
configure: error: gmp.h can't be found, or is unusable.

2 源码下载

在官方网址点击 download 链接进入下载页面,选择「mpfr-4.2.1.tar.xz」下载或者使用 wget 命令直接下载:

wget https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz

MPFR 的源码使用 gitlab 进行托管,在「MPFR - Git Repository」中有详细的介绍,使用以下指令进行克隆。

git clone https://gitlab.inria.fr/mpfr/mpfr.git

可以在 https://ftp.gnu.org/gnu/mpfr/ 路径下查找 MPFR 的其他版本。

3 交叉编译

解压缩源码包,如果使用 git clone 下载回来的源码可以忽略这一步。

tar -xvf mpfr-4.2.1.tar.xz

解压缩源码包之后建议先阅读 README 与 INSTALL 文档,里面有关于编译的相关信息。

mpfr 支持的是 GNU Build System 编译系统,简单理解就是 Unix 经典编译三部曲: ./configure, make, make install

在进行交叉编译前,首先创建一个环境配置文件 aarch64-environment-setup,配置最重要的交叉编译环境变量:

aarch64-environment-setup:

export TOOLCHAIN_ROOT=/opt/toolchains/aarch64--glibc--stable-2022.03-1
export BUILDSYSROOT=$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH=$TOOLCHAIN_ROOT/bin:$PATH

export PREFIX=/usr

export CC="aarch64-linux-gcc --sysroot=$BUILDSYSROOT"
export CXX="aarch64-linux-g++ --sysroot=$BUILDSYSROOT"
export CPP="aarch64-linux-gcc -E --sysroot=$BUILDSYSROOT"
export LD="aarch64-linux-ld --sysroot=$BUILDSYSROOT"
export AR=aarch64-linux-ar
export AS=aarch64-linux-as
export NM=aarch64-linux-nm
export GDB=aarch64-linux-gdb
export OBJDUMP=aarch64-linux-objdump
export OBJCOPY=aarch64-linux-objcopy
export RANLIB=aarch64-linux-ranlib
export READELF=aarch64-linux-readelf
export STRIP=aarch64-linux-strip

export CONFIGURE_FLAGS="--host=aarch64-linux --build=x86_64-linux"

export PKG_CONFIG_SYSROOT_DIR=$BUILDSYSROOT
export PKG_CONFIG_PATH=$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig

在本示例中,交叉编译工具位于 /opt/toolchains/aarch64--glibc--stable-2022.03-1/bin 目录下,将该目录配置到 PATH 环境变量,让系统能够正确搜索到。同时在配置 CCCXXCPPLD 环境变量时指定 --sysroot=<dir> 参数让交叉编译器搜索 dir 目录下的头文件与库文件,而不是 /usr/include/usr/lib

cd mpfr-4.2.1
source aarch64-environment-setup
./configure --prefix=/usr $CONFIGURE_FLAGS
make
make DESTDIR=$BUILDSYSROOT install
  • 源码包解压后,使用 cd 命令切换到源码路径
  • 在源码目录下创建环境设置文件并调用 source 命令让环境变量生效
  • 执行源码包的 configure 文件,带上 --prefix 参数,指定安装路径。在配置文件中定义了临时的 CONFIGURE_FLAGS 来指定 --host--build 选项的值,具体的说明可以使用 ./configure --help 命令进行查阅
  • 执行 make 命令编译源码
  • 使用 DESTDIR 参数作为安装目标文件的前缀变量,后面带上你希望安装到的文件夹路径,详细介绍可以参考 DESTDIR 官方介绍。或者参考我的博文「交叉编译 gmp」关于 DESTDIR 的用法说明。

最终你就可以在环境变量定义的 $BUILDSYSROOT 目录中找到交叉编译好的 libmpfr 的头文件及库文件。

Good luck.

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值