본문 바로가기

개발환경구성

Windows에서 gcc/g++ 컴파일러 패키지 MinGW-w64 설치

"Windows에서 gcc/g++ 컴파일러 패키지 MinGW32 설치" 를 먼저 읽어보면 이 글을 쉽게 이해할 수 있습니다. 

 

mingw64에 대해서 구글링을 하여 보니 http://mingw-w64.org/ 에서 필요한 것을 얻을 수 있다는 것을 알 수 있습니다. 그러나 http://mingw-w64.org/doku.php/download 에서 "MingW-W64-builds"를 선택하고 https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download 에서 installer를 설치하고 실행했으나 실패합니다.

구글링 결과 이것도 동작하지 않는다는 것을 알았습니다. 

 

Winlibs.com의 mingw-w64

좀 더 구글링을 해 보니 https://winlibs.com/ 에서 Mingw-w64를 다운로드할 수 있다는 것을 알았습니다. 

필자는 Release 가운데 GCC 9.4.0 + MinGW-w64 9.0.0 - release 1 / Win64 / Zip archive 를 다운로드 받았습니다.

다운로드 폴더에 다운로드한 압축파일을 확인할 수 있습니다.

  • winlibs-x86_64-posix-seh-gcc-9.4.0-mingw-w64-9.0.0-r1.zip

 

그리고 다운로드 받은 zip 파일을 압축을 풀면 zip 파일명과 같은 폴더를 보며, 그 안에 sub 폴더 mingww64가 있는 것을 볼 수 있습니다. 

 

필자는 폴더 mingww64를 그대로  C:\ 로 옮겼습니다. 

 

환경변수 설정

c:\mingw64\bin 으로 이동하여 gcc와 g++ 의 버전을 확인할 수 있으며, mingw64 패키지에 포함된 컴파일러라는 것을 알 수 있습니다. 

- gcc version 9.4.0

- g++ version 9.4.0

C:\>cd \mingw64

C:\mingw64>cd bin

C:\mingw64\bin>.\gcc- v
'.\gcc-'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.

C:\mingw64\bin>.\gcc -v
Using built-in specs.
COLLECT_GCC=.\gcc
COLLECT_LTO_WRAPPER=c:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/9.4.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../configure --prefix=/R/winlibs64_stage/inst_gcc-9.4.0/share/gcc --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --with-pkgversion='MinGW-W64 x86_64-posix-seh, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --with-mpc=/d/Prog/winlibs64_stage/custombuilt --with-mpfr=/d/Prog/winlibs64_stage/custombuilt --with-gmp=/d/Prog/winlibs64_stage/custombuilt --with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs64_stage/gcc-9.4.0/build_mingw/mingw-w64 CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
gcc version 9.4.0 (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders)

C:\mingw64\bin>.\g++ -v
Using built-in specs.
COLLECT_GCC=.\g++
COLLECT_LTO_WRAPPER=c:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/9.4.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../configure --prefix=/R/winlibs64_stage/inst_gcc-9.4.0/share/gcc --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --with-pkgversion='MinGW-W64 x86_64-posix-seh, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --with-mpc=/d/Prog/winlibs64_stage/custombuilt --with-mpfr=/d/Prog/winlibs64_stage/custombuilt --with-gmp=/d/Prog/winlibs64_stage/custombuilt --with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs64_stage/gcc-9.4.0/build_mingw/mingw-w64 CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
gcc version 9.4.0 (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders)

 

필자는 32bit용 mingw도 설치하였습니다. c:\mingw\bin 으로 이동하여 gcc와 g++ 의 버전을 확인할 수 있으며, mingw 패키지에 포함된 컴파일러라는 것을 알 수 있습니다.

- gcc version 6.3.0

- g++ version 6.3.0

C:\MinGW\bin>.\gcc -v
Using built-in specs.
COLLECT_GCC=.\gcc
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --target=mingw32 --with-gmp=/mingw --with-mpfr --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --with-arch=i586 --with-tune=generic --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --enable-libgomp --disable-libvtv --enable-nls
Thread model: win32
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)

C:\MinGW\bin>.\g++ -v
Using built-in specs.
COLLECT_GCC=.\g++
COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/mingw32/6.3.0/lto-wrapper.exe
Target: mingw32
Configured with: ../src/gcc-6.3.0/configure --build=x86_64-pc-linux-gnu --host=mingw32 --with-gmp=/mingw --with-mpfr=/mingw --with-mpc=/mingw --with-isl=/mingw --prefix=/mingw --disable-win32-registry --target=mingw32 --with-arch=i586 --enable-languages=c,c++,objc,obj-c++,fortran,ada --with-pkgversion='MinGW.org GCC-6.3.0-1' --enable-static --enable-shared --enable-threads --with-dwarf2 --disable-sjlj-exceptions --enable-version-specific-runtime-libs --with-libiconv-prefix=/mingw --with-libintl-prefix=/mingw --enable-libstdcxx-debug --with-tune=generic --enable-libgomp --disable-libvtv --enable-nls
Thread model: win32
gcc version 6.3.0 (MinGW.org GCC-6.3.0-1)

 

필자는 mingw64에 포함된 컴파일러를 이용하므로 gcc, g++을 이용할때 mingw64에 포함된 것을 이용할 수 있도록 Path를 수정해줘야 합니다. 환경변수 Path에서 c:\mingw64\bin을 추가해 줍니다. 만약 c:\mingw\bin 이 있다면 삭제하거나 아래로 이동합니다. 

 

환경변수를 수정하고 gcc를 수행해 보면 c:\mingw64\bin에 있는 gcc를 수행하는 것을 알 수 있습니다. 

C:\>path
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Users\chrisjang\AppData\Local\Microsoft\WindowsApps;C:\MinGw64\bin;

C:\>gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=c:/mingw64/bin/../libexec/gcc/x86_64-w64-mingw32/9.4.0/lto-wrapper.exe
Target: x86_64-w64-mingw32
Configured with: ../configure --prefix=/R/winlibs64_stage/inst_gcc-9.4.0/share/gcc --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32 --with-pkgversion='MinGW-W64 x86_64-posix-seh, built by Brecht Sanders' --with-tune=generic --enable-checking=release --enable-threads=posix --disable-sjlj-exceptions --disable-libunwind-exceptions --disable-serial-configure --disable-bootstrap --enable-host-shared --enable-plugin --disable-default-ssp --disable-rpath --enable-libstdcxx-pch --enable-libstdcxx-time=yes --disable-libstdcxx-debug --disable-version-specific-runtime-libs --with-stabs --disable-symvers --enable-languages=c,c++,fortran,lto,objc,obj-c++ --disable-gold --disable-nls --disable-stage1-checking --disable-win32-registry --disable-multilib --enable-ld --enable-libquadmath --enable-libada --enable-libssp --enable-libstdcxx --enable-lto --enable-fully-dynamic-string --enable-libgomp --enable-graphite --enable-mingw-wildcard --with-mpc=/d/Prog/winlibs64_stage/custombuilt --with-mpfr=/d/Prog/winlibs64_stage/custombuilt --with-gmp=/d/Prog/winlibs64_stage/custombuilt --with-isl=/d/Prog/winlibs64_stage/custombuilt --enable-install-libiberty --enable-__cxa_atexit --without-included-gettext --with-diagnostics-color=auto --enable-clocale=generic --with-libiconv --with-system-zlib --with-build-sysroot=/R/winlibs64_stage/gcc-9.4.0/build_mingw/mingw-w64 CFLAGS=-I/d/Prog/winlibs64_stage/custombuilt/include/libdl-win32
Thread model: posix
gcc version 9.4.0 (MinGW-W64 x86_64-posix-seh, built by Brecht Sanders)

 

SourceForge에서 Mingw-w64 다운로드 하기

https://webnautes.tistory.com/1158 를 통해 알수 있습니다만 https://sourceforge.net/projects/mingw-w64/files/mingw-w64/ 여기에서 직접 다운로드 받을 수 있습니다. 파일 중에서 어떤 것을 다운로드 받아 사용할것인지는 https://stackoverflow.com/questions/17242516/mingw-w64-threads-posix-vs-win32를 참고하면 좋습니다. 필자는 이미 설치한 x86_64-posix-seh 를 이용합니다.