登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
安全
›
CMake构建学习笔记28-gmp&mpfr库的构建
CMake构建学习笔记28-gmp&mpfr库的构建
[ 复制链接 ]
井晶灵
2025-11-21 10:25:01
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
1. 引言
gmp 是一个用于任意精度整数、有理数和浮点数运算的高效C语言库;mpfr 构建在 gmp 之上,专注于正确舍入的任意精度浮点运算。这两个库都是非常底层的库,通常一起使用。
2. 构建
使用本系列文章(《CMake构建学习笔记-目录》)实现的自动化工具 BuildCppDependency 来进行构建 gmp 和 mpfr。以 gmp 为例,在 Windows 平台下输入指令:
./BuildCppDependency.ps1 `
-Generator "Visual Studio 16 2019" `
-InstallDir "$env:GISBasic" `
-SymbolDir "$env:GISBasic/symbols" `
-Install gmp
复制代码
在 Linux (Ubuntu) 平台下输入指令:
./build.sh -install gmp -installdir "$GISBasic"
复制代码
虽然可以直接使用工具,但是还是说一下构建的细节。在 Windows 平台下,想用 MSVC 来构建 gmp 和 mpfr 还是挺困难的,因为 gmp 和 mpfr 是 GNU 项目,只提供 Linux 下的构建方式。要组织成 CMake 项目需要对项目本身有一定的了解,所以笔者这里也不硬搞了,直接使用了 vcpkg 的预编译包,指令的实现其实就是将这个预编译包解压安装。
不过在 Linux/Ubuntu 下就可以自己编写脚本,使用 Autotools + GCC + Make 工具链来进行构建了。gmp的构建脚本如下:
[code]#!/bin/bash# ===========================================# gmp.sh - 构建 GMP 库 # 接收参数:# -installdir # 安装目录(必须)# -force # 强制重新构建# -noclean # 不清理临时文件# ===========================================set -e # 遇到错误立即退出# 默认值InstallDir=""FORCE=falseNOClean=false# 解析可选参数while [[ $# -gt 0 ]]; do case $1 in -installdir) InstallDir="$2" shift 2 ;; -force) FORCE=true shift ;; -noclean) NOClean=true shift ;; --) # 分隔符,后面是项目参数 shift break ;; -*) echo "未知参数: $1" exit 1 ;; *) break # 非选项参数开始,停止解析 ;; esacdone# 检查必要参数if [[ -z "$InstallDir" ]]; then echo "❌ 错误: 必须指定 -installdir " exit 1fi# 项目配置InstallDir=$(realpath "$InstallDir")ScriptDir=$(pwd)SourceBaseDir=$(realpath "../Source") # 绝对路径Name="gmp-6.3.0"SourceZipFile="${SourceBaseDir}/${Name}.tar.xz"ExtractedSourceDir="${SourceBaseDir}/${Name}"BuildDir="${ScriptDir}/build-${Name}" # 明确区分 build 目录TargetFile="${InstallDir}/include/gmp.h"# 检查源码包是否存在if [[ ! -f "$SourceZipFile" ]]; then echo "❌ 源码包未找到: $SourceZipFile" exit 1fi# 如果没有 -force 且目标文件已存在,跳过构建if [[ "$FORCE" == false && -f "$TargetFile" ]]; then echo "✅ GMP 已安装: $TargetFile,跳过构建(使用 -force 可强制重建)" exit 0fiif [[ "$FORCE" == true ]]; then echo "⚠️ 启用 -force 模式,将重新构建 GMP" # 清理旧的构建目录(如果存在) rm -rf "$BuildDir"fiecho "
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
构建
CMake
学习
笔记
gmp
相关帖子
JSAPIThree 加载天地图学习笔记:使用天地图影像服务
五万字沥血事件 深度学习 事件 循环 事件传播 异步 脱离新手区 成为事件达人
吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(二)卷积参数
langchain4j 学习系列(7)-文本分类
Flink学习笔记:时间与Watermark
Solon AI 开发学习19 - 结合 Solon Flow 实现 ReAct 效果
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
基于seekdb,教你从零开始构建智能搜书应用
吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(三)简单卷积网络
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
JSAPIThree 加载天地图学习笔记:使用天地图影像服务
0
113
兜蛇
2025-12-09
代码
五万字沥血事件 深度学习 事件 循环 事件传播 异步 脱离新手区 成为事件达人
0
165
福清婉
2025-12-09
业界
吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(二)卷积参数
0
892
钱闲华
2025-12-09
安全
langchain4j 学习系列(7)-文本分类
0
721
胥望雅
2025-12-09
业界
Flink学习笔记:时间与Watermark
0
78
厂潺
2025-12-09
业界
Solon AI 开发学习19 - 结合 Solon Flow 实现 ReAct 效果
1
797
柴古香
2025-12-09
业界
一只菜鸟学深度学习的日记:填充 & 步幅 & 下采样
0
177
喙审
2025-12-10
科技
基于seekdb,教你从零开始构建智能搜书应用
0
359
萧海芷
2025-12-10
业界
吴恩达深度学习课程四:计算机视觉 第一周:卷积基础知识(三)简单卷积网络
0
1
请蒂
2025-12-10
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
井晶灵
2025-11-21 10:25:01
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845356
3934307807
991122
4
xiangqian
638210
5
宋子
9984
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9951
10
匝抽
9986
查看更多