이 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)은 더 세부적인 세분화를 제공하므로 스레딩 모델 중 하나만 지정할 수 있습니다.

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*

관련 정보