MinGW编译的二进制文件访问Win32/POSIX API的决定因素是什么?
关于MinGW与MSYS2的疑问
我近期正在学习MinGW和MSYS2,目前的理解是:
- MinGW是GCC的Windows移植版本,能生成可在Windows原生运行的二进制文件(类似MSVC)
- MSYS2可以为运行在其中的程序提供POSIX API及库的访问权限,但生成的二进制文件仍需针对Windows编译
但我还有几个核心疑问没搞清楚:
什么决定程序能否访问POSIX API?是官网单独提供的MinGW仅生成只能访问Win32 API的二进制文件,而MSYS2捆绑的MinGW版本生成的文件仅能(或同时)访问POSIX API?还是编译时所在的环境(Windows命令提示符/PowerShell vs MSYS2 Bash)决定了生成文件的API访问能力?或是两种方式生成的二进制文件完全相同,能否访问Win32/POSIX API取决于运行时所在的环境?
我看到有提问者用MSYS2中的MinGW编译C程序,生成的二进制文件依赖
msys-2.0.dll,这是否意味着该文件(仅)能访问POSIX API?是不是因为在MSYS2中调用MinGW编译,和直接调用MinGW编译的结果不同——直接编译出的文件不依赖msys-2.0.dll,只能访问Win32 API?我还看到一个关于MinGW与Cygwin区别的回答,里面提到:
简单来说:
- 在Cygwin中编译程序,就是为Cygwin编译。
- 在MinGW中编译程序,就是为Windows编译。
我不太理解“在Cygwin中编译”是什么意思,Cygwin不就像MSYS2一样是类Linux环境模拟器吗?怎么能“为Cygwin编译”?难道是指在Cygwin的Bash shell中调用MinGW来编译?
抱歉可能存在一些误解,我对MSYS2和MinGW相关的内容感到十分困惑。
内容的提问来源于stack exchange,提问作者I Like Python
相关产品推荐
相关产品推荐

