2016-07-05 12 views
1

저는 최신 MinGW (32 비트)가 설치된 Windows 7 64 비트 시스템과 자체 MinGW와 함께 제공되는 Qt 5.5 SDK (다시 32 비트)가 있습니다. 사실 내가 유일하게 시스템을 사용하는 것은 아니기 때문에 독립형 MinGW를 제거 할 수 없습니다.누락 된 libgcc_s_dw2-1.dll

내 프로젝트는 qmake이고 일반 C 프로젝트 (C++ 아님)입니다. 모든 것이 잘되지만 명령 행에서 바이너리를 실행하려고하면 시스템에서 libgcc_s_dw2-1.dll이 누락되어 응용 프로그램을 시작할 수 없습니다.

문제를 조사한 결과 독립형 MinGW와 Qt SDK와 함께 제공된 패키지에 언급 된 DLL이 있다는 것을 발견했습니다.

  • 독립는 MinGW - libgcc_s_dw2-1.dll 바이너리가 위치한는 MinGW 설치 (gcc, g++, gdb 등)
  • Qt를는 MinGW의 bin 디렉토리 안에 위치 - libgcc_s_dw2-1.dllC:\Qt\Tools\mingw492_32\i686-w64-mingw32\lib 디렉토리 안에 위치 MinGW 구성 요소의 바이너리는 C:\Qt\Tools\mingw492_32\i686-w64-mingw32\bin 안에 있습니다.
나는 그 때문에 제대로 내 PATH 변수를 설정하는 방법을 알고 싶습니다

:

  • 응용 프로그램이 제대로 독립형는 MinGW 설치와
  • 없음 충돌을 시작하지 발생

그냥 side-note : 나는 이미 여기에있는 다른 게시물을 확인했지만 솔루션을 찾을 수 없었다 (아마 나는 그것을 놓쳤다). 나는 또한 LIBS += -static을 시도했지만 그 결과는 같습니다.

답변

0

당신은

cp <path-to-qt-install-dir>\qt5.7.0\5.7\mingw53_32\bin\libgcc_s_dw2-1.dll <path-to-dest-dir>

당신 매트, 당신은 다른 종속성이 찾을 당신이 사용할 수있는 다른 어떤 deps보고 : 당신의 실행 파일이 DLL을 복사 즉 필요합니다 ldd <your-executable>. 당신은에 의해 당신이 볼 수있는 QT 특정 DLL을 복사해야합니다

ldd <executable> | grep -i qt

참고

당신은 정적으로 연결할 수 있습니다 : -static-libgcc 또는 -static 같은 링커 명령,하지만 난 당신을 생각 LGPL 문제가 발생하기 시작하고 소스에서 qt를 정적으로 컴파일해야 할 수도 있습니다.이 특정 파일을 다시 호출 할 수 없습니다.

  • 종속성 워커 : from here

  • 주 2

    죄송합니다 LDD는 당신이 하나 또는 모두를 사용할 수있는 경우에 창을 가지고 실현, 리눅스입니다 <path-to-qt-bin-folder>\windeployqt.exe <path-to-your-executable>

나는 windeployqt와 결과가 섞이지 만, 플러그인을 가지고 있다면 그 부분을 정렬하기에 조용한 편이다.

+1

정적으로 libgcc와 libstdC++로 연결하는 것은 여기에있는 방법이 아닙니다. Qt가 DLL에 링크되어 있으므로 종속성이 생길 수 있으며, 그 위에 컴파일러 런타임과 C++ 표준 라이브러리가 있어야합니다. 귀하의 응용 프로그램, 가능한 글로벌 상태로 엉망이. – rubenvb

+1

또한 MSYS2 환경에는 편리 할 Windows'ldd '가 있습니다. – rubenvb

+0

@rubenvb - 예, 정적 링크가 늦어졌습니다 ... ldd에 관한 Windows (차가운)에 대한 링크가 있습니까? (어디 있나) - 나는 리눅스 도구가 훨씬 더 나은 것을 발견했다 ... –