使用MSYS2在Windows编译GMP64位动态库
下载并安装MSYS2
在MSYS2官网下载msys2-x86_64-20220603.exe,打开并直接完成安装。
如果官网太慢,可以在清华源下载msys2-x86_64-20220603.exe。
我将它安装在了D:\msys64
下。
安装完成后会自动打开一个窗口,不用管它。
接下来需要将D:\msys64\mingw64\bin
这个目录添加到系统变量Path
中,如图:
下载GMP库
在GMP官网下载gmp-6.2.1.tar.xz,文件解压后存放在D:\msys64\home\admin\gmp-6.2.1
中,其中admin
是用户名。
正式安装
打开msys2根目录下的mingw64.exe,打开后窗口如下:
注意红框是MINGW64.
如果执行命令时下载速度太慢,可以先参考这里将镜像源改成优先使用清华源。也就是直接执行如下代码:
1 | sed -i "s#mirror.msys2.org/#mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist* |
- 先更新软件源和软件
1 | pacman -Syu |
- 安装如下内容
1 | pacman -S mingw-w64-x86_64-gcc |
- 跳转到解压后的GMP库的根目录,并进行动态库编译。
这一部分的命令需要执行相当长的时间,电脑约运行了约\(6\)个小时。
(\(2022\)年\(11\)月\(19\)日更新,在新电脑上编译用了不到半小时就完成了,取决于配置)
1 | cd gmp-6.2.1/ |
执行完这些命令看到这个就可以了。
正式使用GMP库
如果直接使用命令行进行编译,那么编译命令需要添加多一个参数,如下:
1 | g++ main.cpp -lgmp |
CodeBlocks使用
在Codeblocks中的设置——编译器——全局编译器设置——可执行工具链切换成msys2中的MinGW,如图
然后再在连接器设置这里添加一个参数-lgmp
即可。
Clion使用
同样也需要先在Clion
切换成MSYS2
中的MinGW
,如图
如果发现这个红色警告Not
Found,那么将\msys64\mingw64
下的include
文件夹整个复制到\msys64\mingw64\x86_64-w64-mingw32
下。
创建一个新的项目后,需要在CMakeLists.txt
中添加如下代码。
1 | target_link_libraries([Project-Name] D:\\\\msys64\\\\mingw64\\\\bin\\\\libgmp-10.dll) |
其中[Project-Name]
是项目的名称。
Vscode使用
新建一个文件夹,并且写好示例代码A.cpp
。
使用快捷键Ctrl+F5
,显示该窗口后点击C++ (GDB/LLDB)
,并点击安装好的MSYS2
的g++.exe
。
运行后发现报错。打开/.vscode/task.json
,在这个地方添加编译参数-lgmp
。
再一次使用Ctrl+F5
运行即可。
示例代码执行
1 |
|
- 直接使用命令行来编译
- CodeBlocks执行结果
- Clion执行结果
- Vscode运行结果
另附:GMP库的文档。
相关参考:[1]