
Windows PC에서 소규모 64비트 GNU 환경을 구성하려고 합니다. 저는 64비트 mingw 환경을 구축했고 다음에 필요한 라이브러리를 계속해서 구축하고 있습니다.
libiconv를 빌드할 때 나는 이것을 따르려고 노력합니다지침--host
, 이는 cipt를 구성하기 위한 매개변수를 제공하여 구성하는 것과 같습니다 . 그러나 다음 오류로 인해 빌드가 실패합니다.
c:/mingw_mine/bin/../lib/gcc/x86_64-w64-mingw32/4.9.2/../../../../x86_64-w64-min gw32/bin/ld.exe: i386 입력 파일 '.libs/libiconv.res.o'의 아키텍처가 i386:x86-64 출력과 호환되지 않습니다.
무엇이 잘못되었나요?
몇 가지 필요한 세부 사항: 저는 미리 컴파일된 32비트 msys를 셸로 사용하고 있습니다. 여기 에는 프로그램 수가 포함 됩니다 make
. 사용 오류를 방지하기 위해 먼저 PATH, C_INCLUDE_PATH 및 CPLUS_INCLUDE_PATH에 필요한 경로를 추가한 후 다음 명령을 사용하여 구성을 수행했습니다.install
gcc
gcc
$ ../src/configure --prefix=/c/temp/gcc/dest --host=x86_64-w64-mingw32 --build=x86_64-w64-mingw32 CPPFLAGS="-Wall -I/c/mingw_mine/include "LDFLAGS="-L/c/mingw_mine/lib"
내가 알 수 있는 한, 구성 스크립트는 내가 원하는 컴파일러를 전체적으로 올바르게 감지하고 구성이 문제 없이 완료됩니다. i386 바이너리는 어디에서 왔나요? 구성이 아키텍처 uname
( 32비트 msys에서) 를 감지하더라도 /bin/uname
호스트가 명시적으로 정의되어 있는지가 왜 중요한가요?
답변1
조사한 후 문제를 해결했습니다. 단계별로 진행하세요:
windres
프로그램 출력 으로 잘못된 바이너리 파일이 나타납니다 . 확인 결과 32비트 msys 환경의 결과가which
나왔습니다 ./bin/windres
- 저는 64비트 mingw용 bintools를 컴파일했으므로
/mingw/bin
폴더에 64비트 windres가 있습니다. 그러나 빌드 프로세스 중에는 사용되지 않습니다. - 구성 프로세스가 어떻게 진행되었는지 확인한 후 다음과 같은 줄을 발견했습니다.
x86_64-w64-mingw32-windres를 확인하세요.... 아니요
윈드레스를 확인하세요...윈드레스
x86_64-w64-mingw32-windres라는 msys 환경 파일을 생성하고 다음 내용으로 /mingw 폴더에 배치했습니다.
#!/bin/sh script="$0" basename="$(dirname $script)" $basename/windres "$@"
재구성 후 빌드가 원활하게 진행되었습니다.