Windows 크로스 컴파일 환경을 올바르게 설정하는 방법은 무엇입니까?

Windows 크로스 컴파일 환경을 올바르게 설정하는 방법은 무엇입니까?

저는 최소한 Linux와 Windows에서 실행되는 C로 작성된 애플리케이션을 개발 중입니다. 저는 주로 Linux에서 작업하므로 Windows용 애플리케이션을 크로스 컴파일할 수 있기를 바랍니다.

내 현재 설정:

  • 데비안 GNU/리눅스 amd64
  • 복잡한 빌드 시스템 없이 단순한 Makefile만 있으면 됩니다.
  • Linux는 GCC를 사용하고 Windows는 MinGW를 사용합니다.

내 응용 프로그램은 많은 라이브러리에 의존합니다. 다행히 내 배포판은 개발 헤더를 제공하므로 Linux 컴파일은 pkg-config를 사용하여 거의 즉시 작동하여 CFLAGS 및 LDFLAGS를 결정합니다.

Windows에서는 잘 작동하지 않습니다. 내 배포판은 개발 헤더를 찾을 수 있는 x86_64-w64-mingw32용 컴파일러 도구 체인을 제공하지만 일부 라이브러리의 경우 Windows용으로 다른 버전이 필요합니다. 안타깝게도,이것들내 배포판에서는 버전을 제공하지 않으므로 직접 설치해야 합니다.

그렇다면 Windows용 개발 헤더는 어디에 설치해야 합니까? pkg-config를 찾으려면 어떻게 해야 합니까? 단일 명령으로 Linux용으로 컴파일할 수 있는 것처럼 단일 명령으로 Windows용으로 컴파일하는 방법이 있습니까 make?


제 경우에는 문제의 라이브러리 중 하나가 SDL2였습니다. 내 배포판과 함께 제공되는 헤더를 사용하여 컴파일하려고 하면 fatal error: iconv.h: No such file or directory.Googling 이 오류가 발생하여 Windows 버전을 사용하라는 메시지도 표시됩니다. 다른 라이브러리는 컴파일 단계에서 작동하는 것으로 보이지만 연결 단계에서는 발견되지 않습니다.

답변1

x86_64-w64-mingw32/usr/x86_64-w64-mingw32일반적으로 툴체인과 함께 사용하려는 라이브러리를 빌드하려면 접두사를 사용해야 합니다.

./configure --prefix=/usr/x86_64-w64-mingw32 --host=x86_64-w64-mingw32

그리고 필요한 기타 옵션.

이렇게 하면 헤더는 /usr/x86_64-w64-mingw32/include, 라이브러리는 /usr/x86_64-w64-mingw32/lib, pkg-config파일은 /usr/x86_64-w64-mingw32/lib/pkgconfig툴체인이 찾을 것으로 예상되는 위치에 있게 됩니다.

에 관해서는 통화가 사용 중인지 pkg-config확인해야 합니다 ( 옵션을 통해 자동으로 발생해야 함). 아직 설치하지 않았다면 설치해야 합니다../configurex86_64-w64-mingw32-pkg-config--hostmingw-w64-tools

(저는 mingw-w64데비안 관리자입니다. 여러분이 제공할 수 있는 피드백에 관심이 있습니다. 특히, 저는 iconv한동안 Windows 패키징에 대해 생각해 왔고 시간이 절약된다면 조금 더 올려보겠습니다. 할 일 목록)

관련 정보