Visual Studio 编译 MPIR 方法小节

Visual Studio 编译 MPIR 方法小节

MPIR 是一个用于高精度计算的数值计算库,提供了对大整数和高精度有理数的支持。

MPIR 是从 GMP 派生出来的项目,GMP 相比大家都听说过,是一套高度优化的任意精度数值计算库。许多很著名的软件在内部都用到了 GMP,比如 gcc。 但是 GMP 有一个问题,就是它里面有大量的汇编代码,这些代码无法在 MSVC 平台下编译。为此,就衍生出了 MPIR 和 MPFR 项目。这两个项目做的工作基本上就是把 GMP 移植到了 MSVC 平台上,其他的改动不多。

当然,MPIR 的目标是跨平台的,linux、Mac OS X 上也可以编译运行。

本篇博客主要讲讲如何在 MSVC平台下编译 MPIR。

首先工官网下载: http://www.mpir.org/
现在的版本是 3.0.0

我用的 MSVC 的版本是 VS2015。
除此之外还要用到 python 3 和 yasm。

python 3 可以从 https://www.python.org/ 下载。

yasm 从 http://yasm.tortall.net/Download.html 下载。
根据操作系统版本,选择

  • Win32 VS2010 .zip (for use with VS2010+ on 32-bit Windows)
  • Win64 VS2010 .zip (for use with VS2010+ on 64-bit Windows)

这两个之一下载。之后将 vsyasm.exe 放到 C:\Program Files\yasm 目录中。

mpir 提供了 VS 各个版本的项目文件,对应关系如下:

  • Visual Studio 2012: mpir/build.vc11/mpir.sln
  • Visual Studio 2013: mpir/build.vc12/mpir.sln
  • Visual Studio 2015: mpir/build.vc14/mpir.sln
  • Visual Studio 2017: mpir/build.vc15/mpir.sln

打开一个 vs 的sln 文件后会出现多个项目。

项目名 说明
dll_mpir_gc standard DLL, no assembler (win32 and x64)
dll_mpir_p3 assembly optimised DLL for pentium 3 (win32)
lib_mpir_p3 assembly optimised static library for pentium 3 (x64)
lib_mpir_core2 assembly optimised static library for core2 (x64)
dll_mpir_core2 assembly optimised DLL for core2 (x64)

这几个项目中 dll 项目包含 c 和 c++ 的接口。 lib 项目只有 c 接口。

如果需要编译出的静态库含有 c++ 接口,就要去编译 lib_mpir_cxx 项目,这个项目是只有 c++ 接口的。

除了上面列出的几个,还有 dll_mpir_haswell_avx dll_mpir_skylake_avx 等四个,这些都是 intel 比较新的处理器。如果你的电脑是对应的处理器,可以编译这些版本,否则也没啥用的。

另外,我建议更改编译出的 dll 和 lib 文件名。右键点击项目名称,弹出的菜单中选属性。会出现下面的对话框。按照下图中指示的位置就可以修改名字了。
这里写图片描述

之后一个一个编译就可以了。我这里 dll_mpir_p3 没有编译成功,其他的都没问题。

下一篇博客介绍这个库如何使用。

猜你喜欢

转载自blog.csdn.net/liyuanbhu/article/details/78278259
今日推荐