このMingw-w64パッケージはなぜそんなに大きいのですか?

このMingw-w64パッケージはなぜそんなに大きいのですか?

インストールは可能ですか?ただ 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-w64MinGW-w64ツールチェーンでサポートされているすべてのターゲットに対してCおよびC ++コンパイラを提供するメタパッケージ。現在、4つの異なるバックエンド(POSIXおよびWindowsスレッドモデルと組み合わせた32ビットおよび64ビット)が含まれています。

すべてが必要でない場合は、apt興味のあるコンパイラのみをインストールするように要求でき、最終的にはより小さなパッケージセットが作成されます。

apt install gcc-mingw-w64-x86-64

これにより、64ビットツールチェーンがインストールされますが、g++まだ約300MiBです。

次のバージョンのDebian(およびUbuntu 20.04)はより詳細なセグメンテーションを提供するため、スレッドモデルの1つのみを指定できます。

apt install gcc-mingw-w64-x86-64-posix

答え2

はい、フルスイートが必要ない場合は、特定の部分のみをインストールすることを選択できます。インストールすると、gcc-mingw-w64Cに必要なものはすべて提供されますが、C ++のサポートは含まれません。これはあなたによく合うかもしれません。

あまり導入したくない場合は、gcc-mingw-w64-x86-64x86-64アーキテクチャに対してのみコンパイルできるように導入するだけです。これにより、i686のサポートは除外されます。 Debian Bullseye 以降でのみ posix-thread を使用してコンパイルしようとすると、これをgcc-mingw-w64-i686-posix

で指定しても、およびパッケージは引き続きgcc-mingw-w64-i686-posix提供されます。*-runtime-basebinutils-**-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*

関連情報