64비트 mingw 환경에서 libiconv 빌드

64비트 mingw 환경에서 libiconv 빌드

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에 필요한 경로를 추가한 후 다음 명령을 사용하여 구성을 수행했습니다.installgccgcc

$ ../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

조사한 후 문제를 해결했습니다. 단계별로 진행하세요:

  1. windres프로그램 출력 으로 잘못된 바이너리 파일이 나타납니다 . 확인 결과 32비트 msys 환경의 결과가 which나왔습니다 ./bin/windres
  2. 저는 64비트 mingw용 bintools를 컴파일했으므로 /mingw/bin폴더에 64비트 windres가 있습니다. 그러나 빌드 프로세스 중에는 사용되지 않습니다.
  3. 구성 프로세스가 어떻게 진행되었는지 확인한 후 다음과 같은 줄을 발견했습니다.

x86_64-w64-mingw32-windres를 확인하세요.... 아니요

윈드레스를 확인하세요...윈드레스

  1. x86_64-w64-mingw32-windres라는 msys 환경 파일을 생성하고 다음 내용으로 /mingw 폴더에 배치했습니다.

    #!/bin/sh script="$0" basename="$(dirname $script)" $basename/windres "$@"

재구성 후 빌드가 원활하게 진행되었습니다.

관련 정보