更新:官方调整在2020年2月5日合并进master,之后的nightly版本能够自动检测MINGW-W64路径。期待登陆stable!
本文目的:
在Rust的windows下的gnu toolchain中使用MSYS2的MINGW-W64提供的编译好的/或者编译过程中需要类POSIX环境的那些C/C++库。
纯Rust程序不需要参看本文的内容。
依赖库里需要链接C/C++库的很可能需要——链接报错的典型提示如下:
undefined reference to `__imp___acrt_iob_func'
undefined reference to `__errno'
声明:
这里的内容本质上是一种临时措施。适用于对2017~2018年时期存在的一些不完美的状态进行临时修补。在未来某一时刻,本文内容将不再适用。届时作废。
1. 缘起
1.1 为数众多的编译器们
Rust 使用的链接器是系统提供的,而且Rust的标准库也对libc有依赖。在Linux/Mac等环境下,Rust会使用gcc执行链接。在Windows下,系统没有原生自带链接器。主流的免费C/C++工具链主要有五套,分别是Visual C++、Clang、Mingw-w64 GCC、MSYS2 GCC、CYGWIN GCC。(这里没有包含WSL的情况,也没有包含用的比较少的mingw32 GCC、msys 1.0 GCC、GCC-MCF等等。)
Rust 在Windows下的编译支持主要是两种,分别对应列表里的Visual