인터넷/IT/프로그래밍
mingw 환경에서 gcc 컴파일 후 libwinpthread-1.dll 을 필요로 하는 경우 해결방안
coffee94
2015. 7. 28. 19:08
우선 "-static-libgcc -static-libstdc++"로 링크를 하면 해결 될것 같지만 해결이 되지 않습니다.
원인은 gcc 스레드 모델이 posix인 경우 문제가 됩니다.
이 문제를 해결하려면 gcc 스레드 모델이 win32이어야 합니다.
스레드 모델은 예를 들어 mingw64를 사용하는 경우 설치 시 다음 부분에서 스레드 모델을 설정 할 수 있습니다.
아래에 보면 기본으로 posix로 설정되어 있음을 볼 수 있는데.
아래처럼 설치 시 Threads를 win32로 변경해야 하고 나머지 부분은 상황에 맞게 알아서 바꿔줍니다.
그리고 msys.bat 을 실행 후 gcc -v를 하면 아래처럼 나오겠죠.
이제 컴파일을 하면 libwinpthread-1.dll 을 사용하지 않습니다.
그리고 컴파일 후 추가로 dll을 요구하면 링크 옵션에서 "-static-libgcc -static-libstdc++" 을 시도해봅니다.
( 링크 옵션은 예를 들어 ffmpeg를 컴파일해야 한다면 "LDFLAGS="$LDFLAGS -static-libgcc -static-libstdc++" ./configure" 형태로 가능합니다. )