저는 최소한 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
확인해야 합니다 ( 옵션을 통해 자동으로 발생해야 함). 아직 설치하지 않았다면 설치해야 합니다../configure
x86_64-w64-mingw32-pkg-config
--host
mingw-w64-tools
(저는 mingw-w64
데비안 관리자입니다. 여러분이 제공할 수 있는 피드백에 관심이 있습니다. 특히, 저는 iconv
한동안 Windows 패키징에 대해 생각해 왔고 시간이 절약된다면 조금 더 올려보겠습니다. 할 일 목록)