2011-11-29 1 views
4

나는 빌드 시스템에 autotools를 사용하고 리눅스에서 잘 컴파일하는 프로그램을 만들고있다. 창문을 만들기 위해 mingw 크로스 컴파일러를 창문에 넣으려고합니다. 이제 리눅스에서 컴파일하고 창으로 이동하면 기본적으로 Windows에 설치되지 않은 DLL이 누락되었습니다. 이로 인해 dll 오류가 누락됩니다. LGPL의 제한으로 인해 내 프로그램을 정적으로 연결할 수 없습니다.DLL이 Windows의 Mingw와 종속 됨

제 질문은이 상황에서 컴파일하는 올바른 방법은 무엇입니까? Windows 용 DLL 종속성을 자동으로 확인하고 설치하는 설치 프로그램에서 내 exe를 래핑해야하지만이 작업을 수행하는 방법을 설명하는 항목을 찾을 수 없었습니다. 기본적으로 나는 yum/apt-get for windows에 대해 생각하고 있습니다. Windows에서 DLL 종속성을 어떻게 관리합니까? 나는 리눅스 녀석이 아니라 창녀니까.

+0

exe와 같은 폴더에 DLL을 넣으십시오. DLL에 대한 재배포 권한이 있습니까? –

+0

안녕 데이비드, 나는 재배포 권을 가지고 있지만 그 일을하기위한 방법에 관심이 적고 올바른 방법에 관심이 있습니다. 예 : 나는 dll을 스스로 컴파일하고 그 dll을 어딘가에 복사하는 작은 스크립트 래퍼를 만들지 만, 아마 그 시점에서 바퀴를 다시 발명 할 것이다. 나에게이 작업을 수행하고 autotools 빌드 프로세스와 통합되는 일반적으로 허용되는 래퍼/설치가 있습니까? 나는 같은 것을 찾을 수 없었습니다 ... –

+1

InnoSetup과 같은 설치 도구를 사용하여 설치 프로그램을 만들 수 있습니다. –

답변

-2

Windows 시스템으로 개발을 옮길 수 있다면 가장 쉬운 방법 일 것입니다. 그러나 그보다 짧은 경우, Wine을 사용하여 Linux 컴퓨터에 Windows-Mingw를 설치할 수 있습니다. (IIRC winetricks도이 목표를 가지고 있습니다.) 그런 식으로 창문에 대한 이슈에 대해 "느낌"을 얻습니다. 대안은 가상 머신의 Windows 일 수 있지만, Wine은 개발 환경에서 괜찮을 것입니다.

Microsoft Visual C++를 설치하는 것이 좋습니다. 익스프레스 버전은 정상적으로 작동합니다. MSVC++에는 dll 의존성 검사기 (dll-dependency checker)와 같이 훨씬 쉽게 사용할 수있는 도구가 많이 있습니다. 추가 정보는 Mark Russinovich의 Sysinternals 도구와 그의 blog입니다.