2016-08-05 2 views
18

Windows 10 주년 업데이트에는 Ubuntu 용 Linux Subsystem이 포함되어 있습니다. 나는 sudo apt-get install gcc으로 gcc를 설치했다. 리눅스 서브 시스템과 함께 GCC를 사용하여 Windows 용 실행 파일을 컴파일하는 방법은 무엇입니까?

내가 테스트 목적으로 몇 가지 간단한 C 코드 작성 :

#include <stdio.h> 
int main(void){ 
    printf("Hello\n"); 
    return 0; 
} 

을 그리고 gcc -c main.c로 컴파일하지만은 (리눅스 전용) main.o가 생성됩니다 실행합니다. ./main.o을 실행하면 Hello이 표시됩니다.

제 질문은 Windows를 실행할 수 있도록 main.c을 어떻게 컴파일합니까? 기본적으로 리눅스 서브 시스템에서 GCC로 *.exe 파일을 어떻게 생성합니까?

+1

'compile Windows exe' ... 이미 실행 가능하지 않습니까? –

+2

귀하의 질문에 (적어도 나에게) 약간 불분명하다. 당신이 얻는 것이 왜 당신이 기대했던 것과 다른지에 대해 더 많은 정보를 제공 할 수 있습니까? 컴파일러에'-c' 옵션을 건네줌으로써 명시 적으로 컴파일 단계 만 수행하도록 지시하고, 링크를 통해 실행 파일을 생성하지 않도록주의하십시오. –

+0

@ G.M. '* .exe' 파일을 얻고 싶다면 그냥'gcc -o main.exe main.c'을 만들어야합니까? 사실,이 출력 파일'main.exe'를 실행하려고하면 http://i.imgur.com/NUDCslM.jpg가 나타납니다. – Mikhail

답변

34

리눅스 서브 시스템은 리눅스 컴퓨터로 작동합니다. 그 안에 리눅스 실행 파일 만 실행할 수 있으며 기본값은 gcc이며 리눅스 실행 파일을 생성합니다.

당신이와 Mingw 크로스 컴파일러 설치해야합니다, 윈도우 실행 파일을 만들려면 :

sudo apt-get install mingw-w64 

그런 다음 32 비트 윈도우를 만들 수 있습니다를 실행에 :

i686-w64-mingw32-gcc -o main32.exe main.c 

그리고와 실행 64 비트 Windows :

x86_64-w64-mingw32-gcc -o main64.exe main.c 

이러한 Windows 실행 파일은 Linux Subsyste 그 밖에 밖에.

+0

gcc의 man 페이지는 Windows 콘솔과 윈도우 화 된 exes를 만들기위한 몇 가지 옵션이 있음을 암시하는 것으로 보입니다.그들이 일하지 않는 이유가 있습니까? -mconsole -mwindows –

+0

Windows 응용 프로그램을 만드는 데 많은 경험이 없으므로 해당 컴파일러 옵션에 대해 자세히 알지 못합니다. 여전히 Windows 전용 옵션은 * -mingw32-gcc 컴파일러에서만 작동하며 Linux 실행 파일을 만드는 기본 gcc에서는 작동하지 않습니다. –

+0

x86_64-w64-mingw32-gcc가 변경되어 Windows C 런타임 (MSVCRT.DLL)과 다른 핵심 Windows 라이브러리를 표준 C 라이브러리 gcc 링크 (아마도/lib에있는 모든 것) 대신 사용하도록 설계된 것 같습니다.). –

4

당신이 리눅스에 GCC를 사용하여 컴파일 할 경우는 ELF 파일 (이해 무엇 창)이 아닌 PE

당신이와 Mingw를 사용할 수있는 리눅스 안에 창을위한 프로그램을 컴파일하려면 파일을 생성합니다.

관련 문제