是否可以安装仅有的 x86_64-w64-mingw32-gcc
?我需要它来执行一个命令,并且mingw-w64
安装超过 800MB...我使用的是 Debian Buster,但对于我刚刚尝试过的其他 Linux 版本也是如此。
$ sudo apt-get install mingw-w64 -V --no-install-recommends
...
The following NEW packages will be installed:
binutils-mingw-w64-i686 (2.31.1-11+8.3)
binutils-mingw-w64-x86-64 (2.31.1-11+8.3)
g++-mingw-w64 (8.3.0-6+21.3~deb10u1)
g++-mingw-w64-i686 (8.3.0-6+21.3~deb10u1)
g++-mingw-w64-x86-64 (8.3.0-6+21.3~deb10u1)
gcc-mingw-w64 (8.3.0-6+21.3~deb10u1)
gcc-mingw-w64-base (8.3.0-6+21.3~deb10u1)
gcc-mingw-w64-i686 (8.3.0-6+21.3~deb10u1)
gcc-mingw-w64-x86-64 (8.3.0-6+21.3~deb10u1)
mingw-w64 (6.0.0-3)
mingw-w64-common (6.0.0-3)
mingw-w64-i686-dev (6.0.0-3)
mingw-w64-x86-64-dev (6.0.0-3)
0 upgraded, 13 newly installed, 0 to remove and 2 not upgraded.
Need to get 137 MB of archives.
After this operation, 809 MB of additional disk space will be used.
Do you want to continue? [Y/n]
答案1
为什么这个 Mingw-w64 包这么大?
因为mingw-w64
是一个元包,为 MinGW-w64 工具链提供了针对所有受支持目标的 C 和 C++ 编译器。目前,这涉及四种不同的后端(32 位和 64 位,结合 POSIX 和 Windows 线程模型)。
如果您不需要所有这些,您可以要求apt
仅安装您感兴趣的编译器,最终您将得到一组较小的软件包:
apt install gcc-mingw-w64-x86-64
这将安装 64 位工具链,不带g++
.仍然是 300MiB 左右...
Debian 的下一版本(和 Ubuntu 20.04)提供更细的粒度,因此您只能指定其中一种线程模型:
apt install gcc-mingw-w64-x86-64-posix
答案2
是的,如果您不需要完整套件,您可以选择安装其中的特定部分。安装后将gcc-mingw-w64
为您提供 C 所需的一切,但不包括对 C++ 的支持。这可能非常适合您。
如果您想引入更少的内容,则可以仅引入gcc-mingw-w64-x86-64
以允许您仅针对 x86-64 架构进行编译。这将排除任何 i686 支持。如果您尝试仅在 Debian bullseye 及以上版本上使用 posix-threads 进行编译,您可以将其进一步隔离到gcc-mingw-w64-i686-posix
.
请注意,即使您指定为gcc-mingw-w64-i686-posix
,您仍然会得到*-runtime
、-base
和包。binutils-*
*-dev
如果您的计划不是编译,而只是使用类似的东西/usr/bin/x86_64-w64-mingw32-elfedit
,那么您可以简单地安装binutils-mingw-w64-x86-64
。您可以使用它apt-file list <package>
来查看每个包提供的文件。
Debian bullseye (11) 和 Ubuntu 20.04 上的依赖关系树如下所示:
mingw-w64
|- gcc-mingw-w64
| |- gcc-mingw-w64-i686
| | |- gcc-mingw-w64-i686-posix
| | | |- gcc-mingw-w64-i686-posix-runtime
| | | |- gcc-mingw-w64-base
| | | |- binutils-mingw-w64-i686
| | | `- mingw-w64-i686-dev
| | `- gcc-mingw-w64-i686-win32
| | |- gcc-mingw-w64-i686-win32-runtime
| | |- gcc-mingw-w64-base
| | |- binutils-mingw-w64-i686
| | `- mingw-w64-i686-dev
| `- gcc-mingw-w64-x86-64
| |- gcc-mingw-w64-x86-64-posix
| | |- gcc-mingw-w64-x86-64-posix-runtime
| | |- gcc-mingw-w64-base
| | |- binutils-mingw-w64-x86-64
| | `- mingw-w64-x86-64-dev
| `- gcc-mingw-w64-x86-64-win32
| |- gcc-mingw-w64-x86-64-win32-runtime
| |- gcc-mingw-w64-base
| |- binutils-mingw-w64-x86-64
| `- mingw-w64-x86-64-dev
`- g++-mingw-w64
|- g++-mingw-w64-i686
| |- g++-mingw-w64-i686-posix
| | |- gcc-mingw-w64-i686-posix
| | |- gcc-mingw-w64-i686-posix-runtime
| | `- gcc-mingw-w64-base
| `- g++-mingw-w64-i686-win32
| |- gcc-mingw-w64-i686-win32
| |- gcc-mingw-w64-i686-win32-runtime
| `- gcc-mingw-w64-base
`- g++-mingw-w64-x86-64
|- g++-mingw-w64-x86-64-posix
| |- gcc-mingw-w64-x86-64-posix
| |- gcc-mingw-w64-x86-64-posix-runtime
| `- gcc-mingw-w64-base
`- g++-mingw-w64-x86-64-win32
|- gcc-mingw-w64-x86-64-win32
|- gcc-mingw-w64-x86-64-win32-runtime
`- gcc-mingw-w64-base
奖励:mingw 的维护者经常访问这个网站。也许你会从他那里得到更好的答案。
答案3
apt download x86_64-w64-mingw32-gcc
dpkg-deb -R x86_64-w64-mingw32-gcc*deb temp
cp temp/your/required/file /tmp/file
rm -rf x86_64-w64-mingw32-gcc*