gcc / g ++를 사용하여 Linux에서 Windows 용으로 컴파일하는 방법은 무엇입니까?


119

Linux에서 freeglut를 사용하여 C ++ (g ++)로 일부 효과를 작성했으며 다음으로 컴파일합니다.

g++ -Wall -lglut part8.cpp -o part8

그래서 g ++가 필요한 모든 것을 포함하는 정적 컴파일 된 Windows 실행 파일을 만들 수 있는지 궁금합니다.

나는 Windows가 없으므로 Linux에서 할 수 있다면 정말 멋질 것입니다. :)


4
@AndiDog, "첫 번째 무료 복용량", 맞습니다. 어쨌든, Windows 시스템에서 자동화 된 빌드 프로세스를 설정하는 동안 Linux 용으로 작업을 완료하고 작업 할 필요가 없습니다.
P Shved 2010 년

Windows없이 Windows 소프트웨어를 어떻게 테스트 하시겠습니까? 와인을 사용하십니까?
el.pescado

7
@ el.pescado, 구축 및 테스트는 완전히 다른 작업입니다. 전자에는 Windows가 필요하지 않습니다.
P Shved 2010 년

답변:


92

mingw32는 Linux 용 패키지로 존재합니다. Windows 응용 프로그램을 교차 컴파일하고 연결할 수 있습니다. 여기 Code :: Blocks 포럼에 튜토리얼이 있습니다 . x86_64-w64-mingw32-gcc-win32예를 들어 명령이로 변경됩니다 .

예를 들어 우분투는 저장소에 MinGW가 있습니다.

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]

3
데비안을 사용하는 경우 mingw32는 이미 저장소에 있으며 사전 컴파일 된 라이브러리도 거의 없습니다.
liori

1
음, nongnu.org/mingw-cross-env에 크로스 컴파일 환경이 있습니다 . 예를 들어 freeglut를 포함합니다. 그러나 나는 이것을 사용하지 않았으므로 그것에 대해 묻지 마십시오.)
AndiDog

4
mingw32의 "32"는 32 비트 바이너리 만 생성 할 수 있음을 의미합니까? 64 비트 바이너리도 생성 할 수있는 솔루션이 있습니까?
bluenote10

1
bluenote10 : "x86_64-w64-mingw32-g ++"와 같이 x64 용으로 빌드되는 변형이 있습니다. 기본 "mingw32"는 가능할 수도 있고 불가능할 수도 있지만 이름으로 변형을 설치 / 사용하는 것은 쉽습니다. ar2015 : C ++ 11을 전혀 지원하지 않습니까? 아니면 문제에 대해 이야기하고 있습니까? 나는 우리가 말하는 것처럼 mingw로 빌드 할 프로젝트를 얻는 중이며 이것은 알아두면 좋은 정보가 될 것입니다. 다른 스레드는 C ++ 11을 지원함을 나타냅니다 (예 : stackoverflow.com/questions/16136142/… ). 물론 기꺼이 도와 드릴 수 있지만 별도의 게시물이 최선입니다.
John P

1
이 주제에 대한 내용이 최근 변경 되었습니까?
Montreal

30

Linux에서 Windows 용으로 컴파일하는 한 가지 옵션은 mingw를 사용하는 것입니다. 여기서 매우 유용한 튜토리얼을 찾았 습니다 .

Debian 기반 시스템에 mingw32를 설치하려면 다음 명령을 실행합니다.
sudo apt-get install mingw32

코드를 컴파일하려면 다음과 같이 사용할 수 있습니다.
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

때때로 Linux에서 직접 새 Windows 애플리케이션을 테스트하고 싶을 것입니다. 와인을 사용할 수 있지만 와인에는 벌레가있을 수 있다는 점을 항상 염두에 두어야합니다. 즉, 와인이나 프로그램 또는 둘 다에 버그가 있는지 확실하지 않을 수 있으므로 일반적인 테스트에만 와인을 사용하십시오.

와인을 설치하려면 다음을 실행하십시오.
sudo apt-get install wine


7
당신은 지정하지 않아도 mingw32-binutilsmingw32-runtime그들은의 의존성 때문에mingw32
henje

멋지다. cpp에는 매우 간단한 오류 ( void main(){}등 ...)가있었습니다. Windows에서는 컴파일되지만 mingw에서는 실패한 것 같습니다. 수정했습니다. 나는 또한 시도 i586-mingw32msvc-cpp하고 컴파일 될 것들과 같은 텍스트 파일을 생성했습니다. .. g ++ 하나가 작동했습니다, thx!
Aquarius Power

2
@henje를 철저히 지정하지 않으면 제거 할 때 패키지 관리자에 의해 자동으로 제거 될 수 있습니다 mingw32( "종속성"로 표시됩니다. 지정하지 않으면 "수동"으로 표시됨).
Matthieu

19

제안 된 방법으로 Ubuntu 16.04에서 오류가 발생했습니다. E : 패키지 mingw32를 찾을 수 없습니다.

================================================= =========================

Ubuntu에이 패키지를 설치하려면 다음을 사용하십시오.

sudo apt-get install mingw-w64

설치 후 사용할 수 있습니다.

x86_64-w64-mingw32-g++

참고하십시오!

64 비트 사용 : x86_64-w64-mingw32-g ++

32 비트 사용 : i686-w64-mingw32-g ++


14

패키지 관리자에서 mingw64와 같은 크로스 컴파일러를 설치하십시오. 그런 다음 단순히 32 비트 Windows 또는 64 비트 Windows에 대한 호출을 gcc호출 i686-w64-mingw32-gcc하는 대신 다음과 같은 방법으로 컴파일 x86_64-w64-mingw32-gcc"하십시오. --static대상 시스템에 모든 라이브러리가 없을 수도 있으므로 옵션 을 사용합니다 .

당신이 포트란 같은 다른 언어를 컴파일하려면, 대신 -gcc-gfortran이전 명령한다.


7

Linux에서 mingw를 사용하여 C에서 Windows 실행 파일을 만들었는데 C ++도 작동 할 것이라고 생각합니다.

clang 및 기타 것들을 크로스 컴파일러 도구 체인으로 패키지화하는 프로젝트 ELLCC가 있습니다. Windows 용 clang (C ++), binutils 및 GDB를 컴파일하는 데 사용합니다. 여러 Linux 호스트 용으로 사전 컴파일 된 바이너리를 보려면 ellcc.org 의 다운로드 링크를 따르십시오 .


1
그 답변을 게시 한 이후로 조금 더 나아갔습니다. clang 및 기타 것들을 크로스 컴파일러 도구 체인으로 패키지화하는 프로젝트 ELLCC가 있습니다. Windows 용 clang (C ++), binutils 및 GDB를 컴파일하는 데 사용합니다. 여러 Linux 호스트 용으로 사전 컴파일 된 바이너리를 보려면 ellcc.org 의 다운로드 링크를 따르십시오 .
Richard Pennington 2015 년

5

출처 : https://fedoraproject.org/wiki/MinGW/Tutorial

Fedora 17부터 win32 및 win64 대상에 대한 바이너리를 쉽게 빌드 (교차 컴파일) 할 수 있습니다. 이것은 mingw-w64 툴체인을 사용하여 실현됩니다 : http://mingw-w64.sf.net/ . 이 툴체인을 사용하면 C, C ++, Objective-C, Objective-C ++ 및 Fortran과 같은 프로그래밍 언어에 대한 바이너리를 빌드 할 수 있습니다.

"Windows 크로스 컴파일러 사용을위한 팁과 요령": https://fedoraproject.org/wiki/MinGW/Tips


3

Fedora의 경우

sudo yum groupinstall -y "MinGW cross-compiler"

1
Fedora 사용자를위한 훌륭한 튜토리얼이 있습니다 : fedoraproject.org/wiki/MinGW (잘못된 링크로 인해 편집 됨)
LemurPwned

내가 찾던 바로 그것! 함께 작동합니다 sudo dnf groupinstall ....
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.