2017-12-01 26 views
0

현재 내 시스템의 mingw 바이너리를 보면 일반적으로 i686-w64-mingw32-*x86_64-w64-mingw32-* 명령이 있습니다.MinGW 바이너리의 이름이 왜 그렇게 복잡한가요? (예 : i686-w64-mingw32 -...)

전 32 비트 Windows 실행 파일을 컴파일하고, 64 비트 Windows 실행 파일을 컴파일한다고 가정합니다.

그러면 w64mingw32은이 바이너리의 이름을 의미합니까?

w32 바이너리에는 어떤 의미가 있습니까? i686-w32-mingw32-gcc? 나는이 프로젝트가 mingw32라고 불리우며 MinGW로 이름이 바뀌었기 때문에 그것이 무엇이라고 생각한다.

답변

1

MinGW는 다른 GNU 소프트웨어와 함께 GCCbinutils을 기반으로합니다. GNU 프로젝트는 아키텍처 정보를 지정하기 위해 소위 "GNU 삼중 항"을 사용합니다. 삼중 체형은 다음 형식을 갖습니다.

machine-vendor-operatingsystem 

바이너리를 만들 때 세 쌍둥이가 지정되었습니다.

MinGW-w64는 w64을 공급 업체 필드로 사용하고 mingw32을 운영 체제로 사용합니다. 물론 mingw32은 운영체제가 아니지만 GCC와 binutils가 시스템 및 소스 코드를 빌드하여 처리합니다.

그래서 바이너리의 긴 이름은 GCC와 binutils가 사용하고있는 빌드 시스템의 아티팩트입니다. 이러한 모든 바이너리는 동일한 디렉토리에 설치되므로 다른 아키텍처를 목표로하는 바이너리 (이 경우 32 비트 대 64 비트)는 다른 파일 이름을 가져야합니다. 가장 쉬운 방법은 바이너리에 해당 아키텍처를 설명하는 GNU 세 줄을 붙이는 것입니다.

+0

Windows 용 리눅스에서 크로스 컴파일하는 방법에 대한 나의 이해를 크게 증진 시켰기 때문에이 답변을 추가로 제공했습니다. – jcarpenter2

+0

@ jcarpenter2 크로스 컴파일에 대해 언급 한 이래로, t는 그것을 아직 발견하지 않았다 : http://mxe.cc –