登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
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 加载 Mapbox 数据学习笔记:使用 Mapbox 矢量瓦片地图
如何通过无代码平台构建高效智能体 — AgenticHub的革命性创新
一只菜鸟学深度学习的日记:入门卷积
Solon AI 开发学习16 - generate - 生成模型(图、音、视)
FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder
go net/http 学习笔记
读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC
读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer
基于深度学习的水稻虫害检测系统演示与介绍
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
JSAPIThree 加载 Mapbox 数据学习笔记:使用 Mapbox 矢量瓦片地图
0
878
姊囝
2025-12-05
安全
如何通过无代码平台构建高效智能体 — AgenticHub的革命性创新
1
629
搜娲瘠
2025-12-05
业界
一只菜鸟学深度学习的日记:入门卷积
0
374
焦尔蕾
2025-12-06
业界
Solon AI 开发学习16 - generate - 生成模型(图、音、视)
0
268
皇甫佳文
2025-12-06
业界
FFmpeg开发笔记(九十一)基于Kotlin的Android直播开源框架RootEncoder
0
451
钤凑讪
2025-12-06
业界
go net/http 学习笔记
0
850
赴忽
2025-12-07
安全
读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC
0
108
尸酒岐
2025-12-07
安全
读书笔记 XILINX ug1137-Zynq UltraScale+ MPSoC Software Developer
0
483
堵赫然
2025-12-07
业界
基于深度学习的水稻虫害检测系统演示与介绍
0
263
颛孙中
2025-12-07
高级模式
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
宋子
9987
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9952
10
匝抽
9986
查看更多