MSYS2 + GCC + CMAKE环境搭建

1. 环境搭建

1.1 msys环境下载与源更新

下载msys2-x86_64软件包 https://www.msys2.org/,双击安装到某根目录下,比如C:\msys64。

1.2 pacman是MSYS2自带的软件管理工具:

可通过修改msys64\etc\pacman.d下的三个文件修改软件源,可供选择的源有:
MSYS2 源使用帮助 — USTC Mirror Help 文档
msys2 | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
北京理工大学镜像
日本北陆先端科学技术大学院大学SourceForge镜像
The UK Mirror Service Sorceforge mirror等。

具体怎么修改点开这几个链接,链接中有具体怎么修改和怎么添加。添加以后运行sys2_shell.bat黑框命令行,然后运行如下命令进行更新本地包数据:

pacman -Sy

核心包可以升级也可以不升级,本人没有做升级

pacman -S --needed filesystem msys2-runtime bash libreadline libiconv libarchive libgpgme libcurl pacman ncurses libintl

进行源和软件更新的过程中如果会出现如下的校验错误信息:

msys2 报 signature from “David Macek <david.macek.0@gmail.com>“ is marginal trust
SmarterTech

网络有很多方式方法,但是这里直接运行了:pacman -S msys2-keyring 解决,一条命令很简单,不需要如下复杂的逻辑:

curl -O http://repo.msys2.org/msys/x86_64/xxx.pkg.tar.xz
curl -O http://repo.msys2.org/msys/x86_64/xxx.pkg.tar.xz.sig
pacman-key --verify xxx.pkg.tar.xz{.sig,}
pacman -U --config <(echo) xxx.pkg.tar.xz

重置密匙操作
rm -r /etc/pacman.d/gnupg/
pacman-key --init
pacman-key --populate msys2

这条命令具体探讨见Package: msys2-keyring - MSYS2 Packages位置信息。

1.3 开发工具安装

开发工具安装主要设计gcc/cmake/make/git

gcc工具安装

查询可以使用的交叉工具链
$ pacman -Sl | grep gcc
mingw32 mingw-w64-i686-arm-none-eabi-gcc 10.1.0-2
mingw32 mingw-w64-i686-avr-gcc 8.5.0-1
mingw32 mingw-w64-i686-gcc 12.1.0-3
mingw32 mingw-w64-i686-gcc-ada 12.1.0-3
mingw32 mingw-w64-i686-gcc-fortran 12.1.0-3
mingw32 mingw-w64-i686-gcc-libgfortran 12.1.0-3
mingw32 mingw-w64-i686-gcc-libs 12.1.0-3
mingw32 mingw-w64-i686-gcc-objc 12.1.0-3
mingw32 mingw-w64-i686-libgccjit 12.1.0-3
mingw32 mingw-w64-i686-riscv64-unknown-elf-gcc 10.1.0-2
mingw64 mingw-w64-x86_64-arm-none-eabi-gcc 10.1.0-2
mingw64 mingw-w64-x86_64-avr-gcc 8.5.0-1
mingw64 mingw-w64-x86_64-gcc 12.1.0-3 [已安装]
mingw64 mingw-w64-x86_64-gcc-ada 12.1.0-3
mingw64 mingw-w64-x86_64-gcc-fortran 12.1.0-3
mingw64 mingw-w64-x86_64-gcc-libgfortran 12.1.0-3
mingw64 mingw-w64-x86_64-gcc-libs 12.1.0-3 [已安装]
mingw64 mingw-w64-x86_64-gcc-objc 12.1.0-3
mingw64 mingw-w64-x86_64-libgccjit 12.1.0-3
mingw64 mingw-w64-x86_64-riscv64-unknown-elf-gcc 10.1.0-2
msys gcc 11.3.0-2
msys gcc-fortran 11.3.0-2
msys gcc-libs 11.3.0-2 [已安装: 9.3.0-1]
msys mingw-w64-cross-gcc 10.2.0-2

安装交叉编译工具链命令
$ pacman -S mingw-w64-x86_64-gcc

cmake安装

查询cmake软件
$ pacman -Sl | grep cmake
mingw32 mingw-w64-i686-cmake 3.24.0-1
mingw32 mingw-w64-i686-cmake-doc-qt 3.24.0-1
mingw32 mingw-w64-i686-extra-cmake-modules 5.85.0-1
mingw32 mingw-w64-i686-python-sphinxcontrib-moderncmakedomain 3.21.4-2
mingw64 mingw-w64-x86_64-cmake 3.24.0-1 [已安装]
mingw64 mingw-w64-x86_64-cmake-doc-qt 3.24.0-1
mingw64 mingw-w64-x86_64-extra-cmake-modules 5.85.0-1
mingw64 mingw-w64-x86_64-python-sphinxcontrib-moderncmakedomain 3.21.4-2
msys cmake 3.23.2-1
msys cmake-emacs 3.23.2-1
msys cmake-vim 3.23.2-1
msys icmake 9.03.01-1

安装cmake软件
$ pacman -S mingw-w64-x86_64-cmake

代码运行过程中出现如下错误,原因是两点,一个没有安装make,另外一个需要修改makefile指定当前编译的是什么系统。

CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE

首先查询和安装make

查询make
$ pacman -Sl | grep make
mingw32 mingw-w64-i686-bmake 20181221-8
mingw32 mingw-w64-i686-cmake 3.24.0-1
mingw32 mingw-w64-i686-cmake-doc-qt 3.24.0-1
mingw32 mingw-w64-i686-dmake 4.12.2.2-1
mingw32 mingw-w64-i686-extra-cmake-modules 5.85.0-1
mingw32 mingw-w64-i686-make 4.3-1
mingw32 mingw-w64-i686-premake 5.0beta1-1
mingw32 mingw-w64-i686-python-sphinxcontrib-moderncmakedomain 3.21.4-2
mingw32 mingw-w64-i686-xmake 2.6.9-1
mingw64 mingw-w64-x86_64-bmake 20181221-8
mingw64 mingw-w64-x86_64-cmake 3.24.0-1 [已安装]
mingw64 mingw-w64-x86_64-cmake-doc-qt 3.24.0-1
mingw64 mingw-w64-x86_64-dmake 4.12.2.2-1
mingw64 mingw-w64-x86_64-extra-cmake-modules 5.85.0-1
mingw64 mingw-w64-x86_64-make 4.3-1 [已安装]
mingw64 mingw-w64-x86_64-premake 5.0beta1-1
mingw64 mingw-w64-x86_64-python-sphinxcontrib-moderncmakedomain 3.21.4-2
mingw64 mingw-w64-x86_64-xmake 2.6.9-1
msys automake-wrapper 11-4
msys automake1.11 1.11.6-6
msys automake1.12 1.12.6-6
msys automake1.13 1.13.4-7
msys automake1.14 1.14.1-6
msys automake1.15 1.15.1-4
msys automake1.16 1.16.5-1
msys cmake 3.23.2-1
msys cmake-emacs 3.23.2-1
msys cmake-vim 3.23.2-1
msys colormake-git r8.9c1d2e6-1
msys icmake 9.03.01-1
msys make 4.3-3
msys remake 4.3+dbg1.5-2

安装make
pacman -S mingw-w64-x86_64-make

安装完成以后需要将C:\msys64\mingw64\bin下面的mingw32-make.exe拷贝一份从新命令为make.exe,这样系统就可以找到这个可执行文件了

然后再修改cmake系统参数指定,这个在我们当前common/cmake中。cmake在windows下默认生成的是visual studio的makelists

如果要生成g++的makefile需要加上参数
cmake -G "MinGW Makefiles"
或者加上
cmake -G "MSYS Makefiles"

Git代码下载工具安装

pacman -S git

2. MinGW下载

在开发环境搭建的过程中除了使用上面独立工具下载这种凡是外,还可以直接下载整包的MinGW整包开发工具,下载方法如下:

pacman -S --needed base-devel mingw-w64-x86_64-toolchain
pacman -S mingw-w64-x86_64-SDL2
pacman -S vim
pacman -S yasm
pacman -S nasm
pacman -S make

3. 代码下载与编译

从新启动一个64位的终端,msys2终端,这个时候按照正常的git clone流程下载代码。

然后执行编译./run.sh -u,执行过程会发现很多错误信息,其中修改的错误信息主要有下面这些,当然修改过程简单粗暴,直接讲不必要的内容注释掉,保证代码先被编译通过。

代码修改

  1. 编译中过程出现ambiguating new declaration of 问题的解决错误,发现是系统内部定义一个version函数和自己代码中定义的一个函数名字相同了,修改一下名字即可
  2. 编译中出现error: cast from 'void*' to 'long int' loses precision [-fpermissive],直接修改函数的入参定义类型,或者直接讲函数调用删除掉了
  3. 遇到很多<sys/..>开头的库文件是linux系统下面的,在Windows中没有,目前直接将其注释掉,没有找到的函数直接也注释掉,这部分工作量比较大
  4. 将CMakes中的-lrt -ldl两个链接脚本指令删除

  • 8
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要配置MSYS2和MinGW,您可以按照以下步骤进行操作: 1. 首先,安装MSYS2。您可以从官方网站上下载MSYS2安装程序,并按照安装向导的指示进行安装。在安装过程中,注意选择适合您系统的32位或64位版本,并将安装目录设置为您喜欢的位置。 2. 安装完成后,打开MSYS2终端,可以通过单击开始菜单中的"MSYS2 MSYS"快捷方式或运行msys2.exe来打开。确保MSYS2终端正常工作。 3. 接下来,您需要安装MinGW。在MSYS2终端中,使用以下命令安装MinGW: ``` pacman -S mingw-w64-x86_64-toolchain ``` 这将安装64位版本的MinGW。如果您需要32位版本的MinGW,可以使用以下命令: ``` pacman -S mingw-w64-i686-toolchain ``` 这将安装32位版本的MinGW。 4. 安装完成后,您可以在MSYS2终端中使用MinGW。只需切换到MinGW环境并编译您的代码即可。使用以下命令切换到MinGW环境: ``` # 切换到64位MinGW环境 source /mingw64_shell.bat # 切换到32位MinGW环境 source /mingw32_shell.bat ``` 切换到MinGW环境后,您可以使用gcc和g++等编译器进行编译。 5. 至此,您已成功配置了MSYS2和MinGW。您可以在MSYS2终端中编译和运行您的程序了。请注意,如果您的程序使用了其他库,您可能需要在MSYS2终端中使用pacman命令安装这些库。例如,要安装CMake,您可以使用以下命令: ``` pacman -S cmake ``` 希望这些步骤能帮助您成功配置MSYS2和MinGW。如果您还有其他问题,请随时提出。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值