交叉编译 mpfr

news2024/9/21 4:53:34

文章目录

  • 交叉编译 mpfr
    • 1 概述
    • 2 源码下载
    • 3 交叉编译

交叉编译 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.

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2100569.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

有哪些开学必备好物推荐?2024年盘点推荐五款高性价比数码好物!

新的学期&#xff0c;新的开始。在 2024 年开学季&#xff0c;为了让同学们更好地投入学习和生活&#xff0c;拥有更便捷、高效的体验&#xff0c;我精心测评盘点并推荐五款高性价比数码好物。这些数码好物不仅能满足学习需求&#xff0c;还能为课余生活增添乐趣&#xff0c;是…

35~750kV 变电站无人值守与集中监控的智能运维模式

1、引言 电力行业的快速发展和电网规模的持续扩张&#xff0c;使得传统的变电站运维模式日渐不能满足现代电网对于安全性、可靠性和效率的更高要求。因此&#xff0c;向无人值守与集中监控过渡&#xff0c;已经逐渐成为了整个行业发展的主旋律。 2、关键技术支撑 2.1 自动化监…

CAE小白入门:HyperMesh的使用和帮助

1.1.3 启动 HyperMesh (1) On PC • 从起始菜单&#xff0c;选择 All Programs >Altair HyperWorks (version) > HyperMesh Desktop。 • 右击上述程序创建软件启动快捷方式&#xff0c;点击快捷方式。 (2) On UNIX • 在命令窗口点击 <install directory>/sc…

提升RAG检索回答质量: Shortwave的 4 大优化指南

这篇文章就针对 RAG 检索这个问题提供一些思路, 以 Shortwave 这家 AI 邮件助手公司的设计思路作为案例,真的很难有公司把产品详细技术机制公布出来 本文在01 部分还针对"微调和 RAG,到底选哪个? " , " 有了支持超长上下文窗口的 LLM,是否还需要 RAG"进行…

城市数字化转型中的机遇:中小型企业产品选型指南

随着城市数字化转型的浪潮席卷全球&#xff0c;中小型企业正面临着前所未有的机遇与挑战。如何精准选型&#xff0c;以最小的成本实现最大的效益&#xff0c;成为众多中小型企业关注的焦点。作为一款低代码开发平台&#xff0c;百数为中小型企业提供了一个高效、便捷、低成本的…

Aigtek功率放大器的参数是什么意思

功率放大器是电子电路中的一种重要组件&#xff0c;用于增加输入信号的幅度&#xff0c;以便驱动负载&#xff0c;如扬声器或天线。在设计和使用功率放大器时&#xff0c;有许多关键参数需要考虑&#xff0c;这些参数影响着功率放大器的性能和适用性。下面将详细介绍功率放大器…

视频合并怎么操作?这篇文章告诉你

当你手头有多个片段&#xff0c;想要将它们巧妙地拼接在一起&#xff0c;形成一个完整的故事时&#xff0c;你会怎么做呢&#xff1f; 手动逐帧调整&#xff1f;这显然是个耗时且复杂的过程。幸好&#xff0c;现在有许多优秀的视频合并模板软件可以帮助你轻松实现这一目标。 …

Power Automate向Power Apps传Table数据

Flow返回查询的数据表并返回Apps 场景介绍代码开发Power Automate开发数据库Power Automate调用存储过程 Power Apps开发代码开发 测试 场景介绍 我们通常会使用Flow 查询数据表然后Apps端将表中的数据显示出来&#xff0c;我们怎么来传呢&#xff0c;它自带的response for Po…

Arduino library for proteus 下载 安装 测试

Arduino library include: https://drive.google.com/uc?exportdownload&id1P4VtXaomJ4lwcGJOZwR_25oeon9Zzvwb 第一步&#xff1a; 也可从我的共享网盘当中下载&#xff1a; 第2步&#xff1a;解压文件&#xff1a; 第3步&#xff1a; copy lib and idx 到对应的…

Qt多媒体播放软件

1、项目背景 1.1、技术背景 随着数字媒体的普及&#xff0c;用户对于多媒体播放软件的需求日益增长。Qt作为一个功能强大且跨平台的应用程序开发框架&#xff0c;提供了一套完整的工具和库来支持多媒体内容的处理。Qt Multimedia模块特别为音频和视频播放、录制以及其他相关任…

B树和B+树总结

B树&#xff08;B-Tree&#xff09;和B树&#xff08;B Tree&#xff09;是两种广泛应用于数据库和文件系统中的自平衡树结构&#xff0c;主要用于存储和检索大量有序数据。它们都是多叉树&#xff0c;即每个节点可以有多个子节点&#xff0c;与二叉树不同。下面是对这两种树的…

每日刷题(图论)

P1119 灾后重建 P1119 灾后重建 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 看数据范围知道需要用到Floyd算法&#xff0c;但是道路是不能直接用的&#xff0c;需要等到连接道路的两个村庄重建好才可以使用&#xff0c;所以这需要按照时间依次加入中转点&#xff0c…

并行数模转换器分辨率的扩展

在并行DAC中存在的一个普遍问题是随着DAC分辨率的提高需要的面积也越来越大。此外&#xff0c;MSB元件值与LSB元件值之比也在增大。我们知道元件的匹配精度随着元件和元件的比值的增大而降低&#xff0c;因此&#xff0c;本节将分析几种能够在元件比和分辨率之间进行权衡的方法…

基于LSTM-AutoEncoder的室内空气质量时间序列数据异常检测

基于LSTM-AutoEncoder的室内空气质量时间序列数据异常检测 LSTM-Autoencoder-Based Anomaly Detection for Indoor Air Quality Time-Series Data DOI: 10.1109/JSEN.2022.3230361 摘要——室内空气质量&#xff08;IAQ&#xff09;数据的异常检测已成为研究的重要领域&…

【SQL】跳过记录筛选第二名

目录 语法 需求 示例 分析 代码 语法 SELECT DISTINCT column1, column2, ... SELECT DISTINCT 语句用于返回唯一不同的值。SELECT DISTINCT 后面跟着想要获取唯一值的列名&#xff0c;列名之间用逗号分隔。当从数据库表中查询数据时&#xff0c;如果表中某列包含重复的…

星坤DDR5 SMT RDIMM金手指连接器:云端存储与高性能计算的未来

在当今数字化时代&#xff0c;数据的快速增长和处理需求对电子元器件提出了更高的要求。星坤电子以其创新的DDR5 SMT RDIMM【X9413 X9414 series】金手指连接器&#xff0c;为云端存储设备、伺服器、电源供应设备、通讯设备、工控主机以及3C电子产品等领域提供了卓越的连接解决…

【ComfyUI】Flux 提示词太难了?Flux Prompt 轻松提示增强!更详细、更具描述性!

前言 所有的AI设计工具&#xff0c;模型和插件&#xff0c;都已经整理好了&#xff0c;&#x1f447;获取~ Flux真的太火了&#xff0c;小编日常也主要以Flux出图为主了。但每每写提示词时有没有人和老徐有类似的情况&#xff0c;就是经常为写提示词而穷思苦想呢&#xff1f;怎…

Google开发者账号个人身份验证经验分享

本文主要讲解Google Play 个人身份验证过程中的注意事项和完整的填写指导教程&#xff0c;为个人开发者身份验证提供参考指引&#xff0c;帮助大家快速通过谷歌的身份信息验证 个人身份验证注意事项 梳理了这段时间个人身份验证填写过程中遇到的问题和解决方案&#xff0c;先睹…

RocketMQ高级特性三-消费者分类

目录 前言 概述 区别 PullConsumer 定义与概述 原理机制 使用场景 优缺点 Java 代码示例 SimpleConsumer 定义与概述 原理机制 使用场景 优缺点 Java 代码示例 PushConsumer 定义与概述 原理机制 使用场景 优缺点 Java 代码示例 总结 前言 RocketMQ中的消…

SpringMVC 第一次复学笔记

服务器启动时&#xff0c;创建spring容器&#xff1b;dispatcherServlet启动时&#xff0c;直接创建springmvc容器初始化一次&#xff0c;实现了springmvc和spring的整合。 SpringMVC里的组件 处理器映射器&#xff08;HandlerMapping&#xff09;负责匹配映射路径对应的Handl…