MSYS2 和 MinGW 都提供 gcc,但是屬於兩個完全不同的工具鏈。
前者屬於 msys2-devel ,後者屬於 mingw-w64-$arch-toolchain。
使用 mingw-gcc 編譯的目標文件是原生的,而使用 msys2-gcc 編譯的目標文件依賴於 msys2 提供的虛擬 POSIX 環境。
如果你要編譯的東西強依賴於 POSIX syscall (比如 fork 等),那麼就要用 MSYS2 的 gcc。而如果是要當做一個 release 拿去給別人用的,用 MinGW 的 gcc 好些。當然,事情也不絕對,對於前者你也可以給源文件 patch 一個 MinGW 移植,對於後者也可以用 MSYS2 然後附帶上 相關dll。
文尾附上MSYS2 編譯FFmpeg依賴項: