惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
博客园_首页
IT之家
IT之家
Engineering at Meta
Engineering at Meta
量子位
宝玉的分享
宝玉的分享
MyScale Blog
MyScale Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
L
LangChain Blog
爱范儿
爱范儿
WordPress大学
WordPress大学
F
Full Disclosure
T
Tailwind CSS Blog
GbyAI
GbyAI
Recorded Future
Recorded Future
美团技术团队
S
SegmentFault 最新的问题
A
About on SuperTechFans
小众软件
小众软件
云风的 BLOG
云风的 BLOG
人人都是产品经理
人人都是产品经理
Recent Announcements
Recent Announcements
Google DeepMind News
Google DeepMind News
Apple Machine Learning Research
Apple Machine Learning Research
D
DataBreaches.Net
J
Java Code Geeks
The Cloudflare Blog
The GitHub Blog
The GitHub Blog
Hugging Face - Blog
Hugging Face - Blog
D
Docker
Vercel News
Vercel News
H
Help Net Security
博客园 - 叶小钗
B
Blog
阮一峰的网络日志
阮一峰的网络日志
N
Netflix TechBlog - Medium
Blog — PlanetScale
Blog — PlanetScale
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
The Register - Security
The Register - Security
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
月光博客
月光博客
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Last Week in AI
Last Week in AI
M
MIT News - Artificial intelligence
Jina AI
Jina AI

Menghuan1918's Blog

提升浏览器多标签页管理效率 介绍页 友链 My Arch Linux - 外观与字体 使用ray.tune进行自动调整超参数 使用Docker(MinIO)和Caddy创建图床服务 AI系统攻击手段(简要概述) RAG预处理增强:让Fastgpt/Dify召回更多东西 将PDF知识图谱化:graphrag+Doc2X+DeepSeek 如虎添翼:为gpt_academic配置searxng搜索 包管理工具UV使用指南:全面替代conda 折腾杂谈:运用Dify+xinference+ollama构建知识库 Ollama跨平台性能比拼:Windows遥遥落后 折腾杂谈:部署一个网页在线状态面板/反代切换到Caddy 笔记软件的最终选择:Obsidian + Self-hosted LiveSync 配置DOSBox以及其窗口大小 在VSCode中配置多平台的C/C++语言支持 折腾杂谈:部署Alist并整合/服务器优化 在Linux上交叉编译出Windows可执行程序 强制对游戏应用FSR 折腾杂谈:Docker部署Rustdesk/切换网站框架 Speedometer 3.0分数测试(电子斗蛐蛐) 在Arch Linux下编译32位C程序出错 使用pelican以及nginx建立个人博客
利用MSYS2在windows上配置C/C++/openGL开发环境
Menghuan1918 · 2024-04-03 · via Menghuan1918's Blog

众所周知,在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\binC:\msys64\usr\bin

就这样
就这样

随后应该就能在PowerShell中使用MSYS64自带的包管理器pacman(吃豆人)了。基本操作可以参照Arch Wiki的内容。到此处MSYS2就算是安装完成了

对于pacman包管理器的一些基本操作:

pacman -Syu
# 更新软件包源以及软件包
pacman -Ss ABc
# 搜索名为Abc的软件包
pacman -S Bca
# 安装名为Bca的软件包
pacman -Rs aaa
# 卸载软件包aaa以及其相关的依赖
就是Arch Linux同款包管理器啦
就是Arch Linux同款包管理器啦

安装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

随后验证一下是不是安装好了:

当然也可以编译个hello world看看
当然也可以编译个hello world看看

安装Lex和Yacc

这两个工具的GUN替代名字是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转发。)