利用MSYS2在windows上配置C/C++/openGL开发环境
众所周知,在windows上配置一些软件(例如GCC,openGL,make...)是相当困难繁琐的,不过好在也不是没有解决方法。比如MSYS2,它提供了一个类Unix的构建环境,可以像在linux上一样安装软件包,而不需要你一个一个手动设置环境变量等等工作(不过是windows平台的)。
这次就使用MSYS2进行配置GCC/make/openGL以及flex/bison的开发环境。相比手动安装每一个工具,这种方法尤为简便快捷。
安装并设置环境变量
在官网上下载安装运行程序,直接按照其默认的安装路径进行安装(即C:\msys64)。MSYS2默认提供了很多环境进行选择,这儿我选择使用mingw64环境。为了能在PowerShell中使用(而不是其自带的mintty终端)以方便远程链接,将MSYS以及MINGW64的执行文件添加到环境变量中。
选择:设置->系统->关于->高级系统设置->环境变量->PATH->添加
添加上C:\msys64\mingw64\bin
和C:\msys64\usr\bin
随后应该就能在PowerShell中使用MSYS64自带的包管理器pacman(吃豆人)了。基本操作可以参照Arch Wiki的内容。到此处MSYS2就算是安装完成了。
对于pacman包管理器的一些基本操作:
pacman -Syu
# 更新软件包源以及软件包
pacman -Ss ABc
# 搜索名为Abc的软件包
pacman -S Bca
# 安装名为Bca的软件包
pacman -Rs aaa
# 卸载软件包aaa以及其相关的依赖
安装GCC/make/openGL
随后就是轻松愉快的包安装环节了,没有更多的环境变量需要配置,只需要执行指令就完成安装了~
pacman -S mingw-w64-x86_64-gcc
pacman -S mingw-w64-x86_64-gdb
# 只需要gcc的话到这一部就够了
pacman -S make
pacman -S mingw-w64-x86_64-freeglut
随后验证一下是不是安装好了:
安装Lex和Yacc
这两个工具的GUN替代名字是flex和bison,安装:
pacman -S flex bison
特别的:关于openGL
在linxu上编译openGL时需要添加-lglut -lGL
链接选项,但是在Windows上有所不同,你需要换成-lfreeglut -lopengl32
。修改Makefile如下:
CC=g++
CFLAGS=-Wall -Werror
LDFLAGS=-lfreeglut -lopengl32
TARGET=app
SRC=test.cpp
all: $(TARGET)
$(TARGET): $(SRC)
$(CC) $(CFLAGS) $(SRC) -o $(TARGET) $(LDFLAGS)
clean:
rm -f $(TARGET)
其他
由于Windows是在QEMU/KVM虚拟机中运行的,原本仅需要编译一些C程序时还能用VScode的远程隧道远程,但是随着还需要运行openGL,就不得不开个RDP远程了。好在RDP效果确实不错(就和在本地运行一样),新建一个sh脚本设置一下端口转发:
#!/bin/sh
sudo iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.98:3389
sudo iptables -t nat -A POSTROUTING -p tcp -d 192.168.122.98 --dport 3389 -j MASQUERADE
这样要用的时候运行下脚本就可以了~(当然,前提是你已经打开了IPv4转发。)