크로스컴파일을 하려고 하는데하이페리온64비트 Debian Linux에서 32비트 Windows를 실행하지만 몇 가지 문제가 있습니다.
먼저 크로스 컴파일러를 설치해보려고 리눅스에 mingw32를 설치했습니다. 유사한 패키지가 많기 때문에 올바른 버전이 설치되어 있는지 확실하지 않습니다. 결국 나는 readme.txt를 찾아서 읽었고 i686-w64-mingw32-gcc가 올바른 32비트 Windows C 컴파일러로 간주되지만 i686-w64-mingw32-gcc에는 두 가지 버전이 있다는 것을 알게 되었습니다. 내가 찾고 있는 것: i686-w64-mingw32-gcc 및 i686-w64-mingw32-gcc-win32. 그래서 i686-w64-mingw32-gcc-win32를 사용하기로 결정했습니다.
다음으로 cc1plus를 찾을 수 없다고 불평합니다. 이 파일의 위치는 /usr/lib/gcc/x86_64-linux-gnu/5/로 연결됩니다. 나는 계속해서 /usr/bin에 /usr/lib/gcc/x86_64-linux-gnu/5/cc1plus에 대한 소프트 링크를 만들었습니다.
그 후 windows.h가 없다고 불평했습니다. /usr/i686-w64-mingw32/include/에 위치했습니다. CFLAGS 경로에 -I 옵션을 추가한 후 온갖 종류의 이상한 오류가 발생합니다. 그 중에는 다음 중 하나가 있습니다.
/usr/i686-w64-mingw32/include/_mingw.h:264:2: error: #error Win32 대상만 지원됩니다!
이제 막혔어요. 내가 어떤 단계를 잘못했는지 잘 모르겠습니다. 나는 이것이 내가 소프트 링크하고 있는 cc1plus의 버그일지도 모른다고 생각합니다. 그러나 그것이 잘못된 경우 올바른 버전을 얻는 방법을 모르겠습니다.
답변1
cc1plus
Windows 크로스 컴파일러가 아닌 일반 C++ 컴파일러에 대해 연결하고 있습니다 . GCC 내부를 수정할 필요는 없습니다. 이 cc1plus
오류는 또 다른 문제를 나타냅니다.
귀하의 경우에는 설치가 필요합니다mingw-w64
( apt-get install mingw-w64
). 그러면 Windows용 C 및 C++ 크로스 컴파일러와 해당 헤더 파일 및 라이브러리가 설치됩니다. 그러면 i686-w64-mingw32
목표로 i686-w64-mingw32-gcc
잘 작동할 것입니다. (v.의 내용에 대한 자세한 내용은 을 참조하세요 README.Debian
. 기본값이 적합할 것입니다.)/usr/share/doc/gcc-mingw-w64-base
-win32
-posix