2021.11.24 Update: 本文内容已失效,已创建脚本全自动编译,脚本在:https://github.com/baihacker/pe/blob/master/libraries_on_win64.md。此外,编译好的文件(include和lib)可以在https://pan.baidu.com/s/1OI-vk3JJevYphIsFoNg_vA找到(密码:x7cg)
本文介绍如何在windows下编译64位的flint2,解决了windows下对应库的编译错误.
1.安装MinGW64
下载地址:https://sourceforge.net/projects/mingw-w64/
下载installer后运行,在运行时选择需要安装的版本,本文使用的版本是MinGW-x86_64-8.1.0-win32-seh-rt_v6-rev0
2.安装msys2
下载地址:https://www.msys2.org/
安装成功后将mingw64下的mingw64拷贝到C:/msys64下的mingw64.
运行C:/msys64/mingw64.exe后进入终端
3.准备必要的库
flint-2.5.2:http://www.flintlib.org/
gmp-6.1.2:https://gmplib.org/
mpfr-4.0.1:https://www.mpfr.org/
mpir-2.7.2:http://mpir.org/
创建目录
C:/msys64/home/<计算机用户名>/build
以后称C:/msys64/home/<计算机用户名>为~
将上述4个库的压缩包解压到~/build下 (压缩包放在~/build下后解压到当前文件即可)
4.编译gmp
4.1 进入gmp目录
4.2 ./configure --disable-shared --enable-static --prefix=/usr --enable-cxx --host=x86_64-w64-mingw32
4.3 make
4.4 make install
5.编译mpir
5.1 进入编译mpir目录
5.2 ./configure --disable-shared --enable-static --prefix=/usr
5.3 make
5.4 make install
6.编译mpfr
6.1 进入编译mpfr目录
6.2 ./configure --with-gmp=/usr --enable-static --disable-shared --prefix=/usr
6.3 修正makefile中的问题. 如果直接make会有rm: unknown option -- c的错误,原因在于sh在执行libtool时参数的一些问题,解决方案:
在src目录下将makefile中DEFS变量的-DLT_OBJDIR=\".libs/\"替换为-DLT_OBJDIR=.libs,以及-DMPFR_PRINTF_MAXLM=\"ll\"替换为-DMPFR_PRINTF_MAXLM=ll
6.4 make
6.4 make install
7.编译flint
7.1 进入编译flint目录
7.2 ./configure --disable-shared --enable-static --prefix=/usr --with-mpir=/usr --with-mpfr=/usr
7.3 修正makefile的问题. 在libflint.a对应命令中将BUILD_DIR=../build/$(dir);改为BUILD_DIR=$(CURDIR)/build/$(dir);
7.4 make
7.5 上一步的make不会成功,其中BUILD_DIRS里的一些模块没有编译,在最后的错误信息中可以看到对应目录下*.o不存在,所以将makefile中的BUILD_DIRS变量修改只剩这些未编译的模块
7.6 make -B
7.7 将7.5中的修改revert
7.8 make -B
7.9 如果还出现7.5中所述错误,回到7.5继续只编译不存在的模块
7.10 make install (不必关心shared library的一些错误)
8. 验证
8.1 进入flint目录下的test目录
8.2 export C_INCLUDE_PATH=/usr/include:/usr/include/flint
8.3 gcc t-add_ssaaaa.c -L/usr/lib -lflint -lgmp -lmpfr -lmpir (注意几个依赖库的顺序,如果修改可能导致一些符号找不到)
8.4 ./a.exe 期望输出add_ssaaaa....PASS
9. 编译好的文件(include和lib)可以在https://pan.baidu.com/s/1OI-vk3JJevYphIsFoNg_vA找到(密码:x7cg)
本文提供了在Windows上使用MinGW64和msys2编译64位flint2的详细步骤,包括安装MinGW64、msys2,以及编译gmp、mpir、mpfr和flint的完整过程,并给出了可能出现的问题及解决方法。编译好的文件可在指定链接中获取。
1万+

被折叠的 条评论
为什么被折叠?



