윈도우에서 gcc나 g++로 개발을 하고 배포할 때 libgcc_s_dw2-1.dll 에러가 발생하는 경우가 있다. 이것은 주로 MinGW를 사용하여 프로그램을 개발한 경우에 발생한다. 또한 웹사이트에서 다른 사람이 만든 프로그램을 내려받을 때에도 libgcc_s_dw2-1.dll에러가 발생할 수 있다.
libgcc_s_dw2-1.dll 에러의 해결방법에 대해서 알아보자.
* libgcc_s_dw2-1.dll 오류 발생 이유
g++ 프로그램이 필요해서 MinGW를 사용하여 g++ 환경을 만들고, 프로그램을 작성하여 컴파일을 하였다. 실행해서 문제없이 잘 동작하는 것을 충분히 확인한 후에 사람들에게 전달했지만 오류가 발생해서 동작하지 않는다는 대답을 들었다.
다음과 같이 시스템 오류 메시지로 libgcc_s_dw2-1.dll가 없다고 출력되어 당황하였다. 이럴 경우에 어떻게 해야 할지 알아보자.
libgcc_s_dw2-1.dll 는 EagleGet에서 만든 동적 라이브러리로써, 처음에는 Windows10을 위해 개발되었다. 이 파일은 MinGW가 포함하고 있는 DLL 패키지이다. gcc나 g++ 프로그램에 참조되는 것이다.
내 컴퓨터에서만 잘 동작하는 이유는 PC의 환경 차이 때문이다. 내 컴퓨터에 MinGW 환경이 구성되어 있어서 libgcc_s_dw2-1.dll 파일을 참조할 수 있거나, 다른 사람의 컴퓨터가 윈도우 업데이트가 되어 있지 않아 문제가 발생했을 수도 있다.
MinGW가 생각보다 똑똑하지는 않은 것 같다.
* 다운로드 받은 파일의 libgcc_s_dw2-1.dll 에러 해결
인터넷 등에서 다운로드한 파일이 libgcc_s_dw2-1.dll에러 메시지를 출력할 때, 해결방법은 libgcc_s_dw2-1.dll 파일을 다운로드하여서 윈도우 시스템 폴더에 붙여 넣는 것이다. 문제는 위에서도 말했듯이 프로그램 실행 시 참조할 libgcc_s_dw2-1.dll 파일이 없기 때문에 오류가 발생하는 것이다. 즉, 다운로드한 프로그램이 실행될 때 libgcc_s_dw2-1.dll 파일이 PATH에 포함되어 있어야 한다.
해결방법은 libgcc_s_dw2-1.dll 파일을 다운로드 받아서 내 컴퓨터의 시스템 폴더에 복사해 넣는다.
윈도우별 위치는 다음과 같다.
Windows 95/98/Me : C:\Windows\System
Windows NT/2000 : C:\WINNT\System32
Windows XP, Vista, 7 : C:\Windows\System32
Windows 10 : : C:\Windows\SysWOW64\
아래 파일은 내 PC의 MinGW 폴더에 있는 libgcc_s_dw2-1.dll 파일이다. 이상한 파일은 아니나, 의심이 되면 인터넷에서 찾아 사용하시기를 권장드린다.
윈도우10 64bit에서 사용하고 있는 libgcc_s_dw2-1.dll 파일이다.
MinGW 설치 폴더에 가보면 dll 파일을 찾을 수 있을 것이다.
그래도 잘 동작하지 않는다면 윈도우 업데이트를 진행하자. 윈도우 시스템 환경이 맞지 않아 발생할 수도 있다.
이렇게 하면 해결이 되겠지만, 근본 원인은 역시나 프로그램을 배포한 사람이 해결해야 한다.
* 배포한 프로그램의 libgcc_s_dw2-1.dll 에러 해결
해결방법은 간단하다. 프로그램을 만들 때 libgcc_s_dw2-1.dll 파일을 프로그램에 포함시키는 것이다.
그렇게 만들기 위해서는 gcc 또는 g++의 static 옵션을 사용하자. 빌드 옵션에 다음을 추가하면 된다.
* 빌드 옵션 추가로 해결
옵션을 사용하여 빌드시에 static 라이브러리를 추가하자.
-static-libgcc -static-libstdc++
* 실제 사용 예제
다음은 TestProject 프로그램을 작성할 때 예제이다. 위의 빌드 옵션을 추가해 주면 된다.
g++ -static-libgcc -static-libstdc++ -o TestProject test_main.cpp test_sub.cpp
* 다른 옵션과 함께 사용할때 예제
배치파일 등에서 사용할 때는 다음과 같이 다른 define과 함께 옵션으로 정의해서 사용하면 관리가 편하다.
set TEST_PROJECT_COMFILE_OPTION=-D_COMPILER_GCC_TYPE_=1 -D_TESST_PROJECT_DEBUG_DISABLE_=1
set TEST_PROJECT_COMFILE_OPTION= %TEST_PROJECT_COMFILE_OPTION% -static-libgcc -static-libstdc++
g++ %TEST_PROJECT_COMFILE_OPTION% -o TestProject test_main.cpp test_sub.cpp
* 마무리
내 컴퓨터에서 프로그램이 잘 동작하는 것을 확인했다면,
꼭 다른 사람에게도 전달해서 오류 메시지가 출력되지 않는지 다시 한번 확인하자!!
'개발' 카테고리의 다른 글
[자바스크립트. Javascript] append, prepend, after, before (0) | 2022.04.04 |
---|---|
주소창 URL에서 물음표(?)와 앰퍼샌드(&)의 의미 (0) | 2022.04.03 |
[윈도우] 배치파일 명령어 setlocal 사용 방법 (0) | 2022.03.24 |
[윈도우] 배치파일 문법 setlocal EnableDelayedExpansion 사용하기 (0) | 2022.03.24 |
자바스크립트(JavaScript) 기초 문법 - 초급 (0) | 2022.03.13 |
댓글