WFDB编译环境

117 阅读2分钟

下面是 Windows 上安装 MSYS2 的简明步骤与常见注意点。

一、下载安装

  1. 访问 https://​www.​msys2.org/ 下载最新安装器(msys2-x86_64-...exe)。
  2. 运行安装器,建议安装到默认路径 C:\msys64(路径不要包含空格或中文更稳妥)。
  3. 完成后勾选“Run MSYS2 now”启动 MSYS2 MSYS 终端(黑色窗口)。

二、首次更新系统 在“MSYS2 MSYS”终端中执行:

pacman -Syu
  • 执行后若提示需要关闭窗口,请关闭该终端。
  • 重新打开“MSYS2 MSYS”终端,再继续更新
pacman -Su

这样完成核心与剩余包的全面更新。

三、安装工具链与构建工具 根据目标选择对应的终端与工具链(建议 64 位):

  • 打开开始菜单,依次选择:

    • MSYS2 MinGW x64(用于 64 位原生 Windows 程序)

在“MSYS2 MinGW x64”终端中安装常用工具:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain make pkgconf

按需安装可选依赖:

pacman -S mingw-w64-x86_64-curl mingw-w64-x86_64-flac

四、验证环境 在“MSYS2 MinGW x64”终端执行:

gcc --version
pkg-config --version

能显示版本说明环境就绪。

五、常见问题与提示

  • 终端的区别:

    • MSYS2 MSYS:维护环境自身与通用工具,不用于编译原生 .exe。
    • MSYS2 MinGW x64/​MinGW x86:用于编译原生 Windows .exe(推荐使用 x64)
  • 更新失败/​密钥问题(极少见):可尝试

pacman-key --init
pacman-key --populate msys2
pacman -Syyu
  • 升级速度慢:可在 etc/​pacman.​d/​mirrorlist.* 调整镜像顺序(一般无需修改)。
  • 卸载:关闭所有 MSYS2 终端,删除 C:\msys64 目录及开始菜单快捷方式即可(如需保留软件包缓存,先备份 C:\msys64\var\cache\pacman\pkg)。

六、用于本项目的快速起步(64 位示例)

  • 打开“MSYS2 MinGW x64”终端,进入项目目录后执行:
pacman -S --needed base-devel mingw-w64-x86_64-toolchain make pkgconf
# 按需:网络与压缩支持
# pacman -S mingw-w64-x86_64-curl mingw-w64-x86_64-flac

./configure --host=x86_64-w64-mingw32 --prefix="$PWD/build-root" --without-xview
# 如果不需要网络/FLAC支持,可加:--without-netfiles --without-flac

make
make install

如果编译出错,提示是用了旧的C标准定义的函数

ann2rr.​c: In function 'main':  
ann2rr.​c:40:1: warning: old-style function definition [-Wold-style-definition]  
40 | main(argc, argv)  
| ^~~~  
ann2rr.​c:50:10: error: conflicting types for 'atol'; have 'long int(void)'  
50 | long atol();  
| ^~~~  
In file included from C:/​project/​wfdb-10.7.0/​build/​include/​wfdb/​wfdb.​h:579,  
from ann2rr.​c:30:  
C:/​msys64/​mingw64/​include/​stdlib.​h:322:16: note: previous declaration of 'atol' with type 'long int(const char *)'  
322 | long __cdecl atol(const char *_Str);  
| ^~~~  
ann2rr.​c:57:13: error: too many arguments to function 'prog_name'; expected 0, have 1  
57 | pname = prog_name(argv[0]);  
| ^~~~~~~~~ ~~~~~~~

可以将命令改为

pacman -S --needed base-devel mingw-w64-x86_64-toolchain make pkgconf
# 按需:网络与压缩支持
# pacman -S mingw-w64-x86_64-curl mingw-w64-x86_64-flac

./configure --host=x86_64-w64-mingw32 --prefix="$PWD/build-root" --without-xview
# 如果不需要网络/FLAC支持,可加:--without-netfiles --without-flac


make CC="x86_64-w64-mingw32-gcc -std=gnu89"
make install