Windows搭建MSYS2和MINGW64环境

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Windows搭建MSYS2和MINGW64环境相关的知识,希望对你有一定的参考价值。

参考技术A 为了在windows下编译GDAL和Cesium Terrain Builder等软件,需要搭建MSYS2和MINGW64的编译环境

Windows Server 2012 R2
MSYS2 64位

双击安装MSYS2之后,由于MSYS2默认资源站点速度较慢,可以配置国内 清华大学开源镜像站
安装完成后,编辑 /etc/pacman.d/mirrorlist.mingw32 ,在文件开头添加:

编辑 /etc/pacman.d/mirrorlist.mingw64 ,在文件开头添加:

编辑 /etc/pacman.d/mirrorlist.msys ,在文件开头添加:

然后执行 pacman -Sy 刷新软件包数据即可。
配置国内镜像站点后,在shell里面执行 pacman -Syuu 更新全部依赖

MSYS2内置了pacman包管理工具,运行
pacman -S gcc make
即可安装gcc,make等工具

msys2安装完成后,开始菜单会有三个启动方式:

三种启动方式区别主要在于编译环境软件包的不同,如gcc,clang等版本不同。通用的工具如:grep,git,vim,emacs等等在三种方式内都是一样的。

默认情况下, msys64/home 会作为系统默认home目录,如果需要修改home目录,可在环境变量-》用户变量中建立 Home 变量,指向自定义位置,然后修改 msys64/etc/nsswitch.conf ,设置 db_home: /%Home%

调试使用 mingw/msys2 构建的 Windows 服务

【中文标题】调试使用 mingw/msys2 构建的 Windows 服务【英文标题】:Debugging Windows service built with mingw/msys2 【发布时间】:2018-06-22 15:30:39 【问题描述】:

在使用 MSYS2 环境在 Windows 上使用 QT 和 Boost Logger 构建的 Windows 服务中调试崩溃的时间真是太棒了。当我在退出前停止程序时,真正的主要问题就出现了。该程序只是不成功地存在并抛出了这些坏男孩之一:

如果我在 gdb 中运行它,那可能是另一回事了。我在 windbg 中打开故障转储并获取一些信息,但由于未导出符号,因此它真的很神秘。

当我的程序(称为服务)调用日志时,我发现了一些问题。但我不能在这里做太多的地方或什么。我怎样才能得到有用的东西,以便最终解决这个问题?

非常感谢!

【问题讨论】:

我很想对不赞成票发表评论。我真的不是要你调试我的代码。我只是想学习如何自己做。如果我问的方式很糟糕,请告诉我! 【参考方案1】:

似乎最简单、最自然的方法是将 gdb 附加到正在运行的进程。我只是以管理员身份运行 msys2,然后运行命令

gdb service.exe -p [processID]

任务管理器给了我进程 ID。附加该过程后,我就使用了命令

continue

让它继续运行。然后我让它崩溃,gdb完美地给了我回溯。

我对此进行了一些搜索,这比尝试让 windbg 读取 g++ 生成的符号或读取汇编代码要简单得多。希望这可以帮助遇到同样问题的人。

参考资料:

How to attach a process in gdb

【讨论】:

以上是关于Windows搭建MSYS2和MINGW64环境的主要内容,如果未能解决你的问题,请参考以下文章

mingw64+msys2下使用cmake问题

windows搭建gcc开发环境(msys2)

Zephyr学习开发环境搭建

VS Code 安装与配置(使用MSYS2环境与mingw-w64 编译环境)

windows安装msys2 mingw64

使用 MSYS2/MINGW-64 缺少 POSIX 和 std 符号