ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Sublime Text 3와 MinGW를 사용하여 C/C++ 개발 환경 만들기
    개발 환경/C, C++ 2018.07.23 19:48

    윈도우에서 간단한 테스트 코드를 작성할 때 사용할 수 있는 MinGW와 Sublime Text 3를 사용한 간단한 개발 환경 만드는 방법을 다룹니다.

    EUC-KR 인코딩 때문에 프로그램 실행시 한글이 깨지는 문제 해결 방법도 다루고 있습니다.




    1. MinGW 설치


    2. Sublime Text 3 설치 및 설정


    3. 예제 코드 실행


    4. 한글 문제 해결





    2018. 6. 18 -  최신 버전으로 테스트 및 수정

    2018. 7.  2 - MinGW 설치 방법 분리

    2018. 7. 23 - 한글 입출력 문제 해결 방법 추가



    1. MinGW 설치


    아래 링크에서 다운로드 받아 설치하세요.

    https://sourceforge.net/projects/mingw-w64/



    다음 포스팅을 참고하여 진행하세요.


    윈도우용 gcc, g++ 컴파일러를 사용하기 위해 MinGW 설치하는 방법

    http://webnautes.tistory.com/1196




    2. Sublime Text 3 설치 및 설정

    2-1. http://www.sublimetext.com/3 에서 Sublime Text 3을 다운로드 받아 설치합니다.





    2-2. Sublime Text 3의 메뉴에서 Tools > Build System > New Build System을 선택합니다.




    2-3. 다음 내용을 복사해서 붙여넣기합니다.

    출처 - https://stackoverflow.com/a/27509303


    g++해도 C언어도 컴파일이 잘되나.. 혹시 문제가 생기면 gcc로 변경하세요.


    {
       "cmd": ["g++", "${file}", "-o", "${file_base_name}.exe"],
       "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$",
       "working_dir": "${file_path}",
       "selector": "source.c, source.c++",
       "shell": true,

       "variants":
       [
           {
               "name": "Run",
               "cmd": ["start", "cmd", "/k", "${file_path}/${file_base_name}.exe"],
               "shell": true
           }
       ]
    }




    2-4. Ctrl + S를 누르고 cpp.sublime-build로 저장합니다.





    3. 예제 코드 실행


    3-1. 단축키 Ctrl + N을 누르거나 메뉴에서 File > New File를 선택하고 다음 코드를 복사해서 붙여넣습니다.


    #include <iostream>

    using namespace std;

    int main()
    {
       char buf[256];

       cout << "한글을 입력하고 엔터를 눌러보세요." << endl;
       
       cin >> buf;
       cout << "->" << buf << endl;

       return 0;
    }




    3-2. Ctrl + S 키를 눌러서 확장자가 cpp인 파일 이름으로 저장합니다.





    3-3. 메뉴에서 Tools > Build With를 선택하거나 Ctrl + Shift + B를 누릅니다.

    메뉴에서 cpp를 선택하면 컴파일이 진행됩니다.





    문제 없으면 창 아래쪽에  Finished 라는 메시지가 보입니다.





    3-4. 다시 메뉴에서 Tools > Build With를 선택하거나 Ctrl + Shift + B를 누릅니다.

    메뉴에서 cpp - Run을 선택하면 프로그램이 실행됩니다.  





    별도의 명령 프롬프트 창에 실행결과가 보입니다.

    입력한 단어 “한글” 외에는 모두 깨져보입니다. 입력 받은 글자를 출력해주지도 못합니다.




    다음 장에서 이 문제를 해결하는 방법을 소개합니다.




    4. 한글 문제 해결


    4-1. Ctrl + ` (왼쪽 탭키 위에 있는 키)를 누르거나 메뉴에서 View > Show Console 선택하면 하단에 콘솔창이 열립니다.





    4-2.  https://sublime.wbond.net/installation  에서 SUBLIME TEXT 3 탭 아래에 있는 텍스트를 드래그 후 복사합니다.





    4-3. 아래 캡쳐 화면에서 보이는 빨간 사각형으로 표시한 입력창에 붙여 넣기 하고 엔터를 누릅니다.




    잠시 후 콘솔창에 아래 캡쳐 화면처럼 메시지들이 보이게 됩니다.





    4-4.  Ctrl + Shift + P를 입력하고 입력 창에 Install을 입력하면





    Package Control:Install Package가 보입니다. 이 항목을 선택합니다





    4-5. 입력창에 convert 입력하면 보이는 ConvertToUTF8을 선택합니다.





    설치가 완료되기를 잠시 기다립니다.





    4-6. Ctrl + N을 눌러서 새로운 파일열고 다음 코드를 복사해줍니다.


    #include <iostream>

    using namespace std;

    int main()
    {
       char buf[256];

       cout << "한글을 입력하고 엔터를 눌러보세요." << endl;
       
       cin >> buf;
       cout << "->" << buf << endl;

       return 0;
    }




    4-7. Ctrl + S를 누르고 확장자가 cpp인 파일로 저장합니다.





    4-8. 메뉴에서 File > Set File Encoding to > Korean(EUC-KR)을 선택하고 Ctrl + S를 눌러 다시 저장합니다.




    4-9. Ctrl + Shift + B를 눌러 다시 컴파일 및 실행을 해보면 한글 입력 및 출력이 잘되는 것을 확인할 수 있습니다.




    포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
    댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

    여러분의 응원으로 좋은 컨텐츠가 만들어집니다. 지금 본 내용이 도움이 되었다면 후원 또는 유튜브 구독 부탁드립니다. 감사합니다 : )

    유튜브 구 독 하 기
    후 원 하 기


    댓글 34

    • 13 2017.11.27 15:29


      잘보고 갑니다.

    • Jameswic 2018.07.16 09:06


      감사합니다 덕분에 잘설치되었습니다.

    • 23 2018.07.22 19:22


      영어는 실행이 잘 되는데 한글로 하면 한글이 깨져서 나옵니다ㅠㅠ

    • 빨강마티즈 2018.11.13 06:48


      잘보고 갑니다. 한번에 따라하기 성공했습니다.^^

    • 감사합니다! 2018.11.28 02:21


      감사합니다 덕분에 아무 문제없이 잘 설치했습니다

    • HK31 2019.04.12 01:22


      감사합니다! 많은 도움이 됐습니다~~

    • 농구곰 2019.05.02 18:09


      예제를 해보다가 오류가 발생하여 질문드립니다
      3-4에서 cpp-run을 한다음 'C:\Users\user\Desktop\졸작/hello.exe'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
      배치 파일이 아닙니다. 이렇게 뜨면서 오류가 나는데 어떻게 해야하나요???

    • 농구곰 2019.05.02 18:40


      C:\Users\user/hello.exe'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
      배치 파일이 아닙니다.

      파일 위치를 바꿔도 이렇게 오류가 납니다 ㅠㅠ

    • 농구곰 2019.05.04 10:48


      설정이 Automatic으로 돼있는데도 안되네요 ㅠㅠ
      cpp 설정할때 이렇게 뜨는데 맞는건가요??
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x24): undefined reference to `std::cout'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x29): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x30): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x37): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x4b): undefined reference to `std::cin'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x50): undefined reference to `std::basic_istream<char, std::char_traits<char> >& std::operator>><char, std::char_traits<char> >(std::basic_istream<char, std::char_traits<char> >&, char*)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x5f): undefined reference to `std::cout'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x64): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x78): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x7f): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0x86): undefined reference to `std::ostream::operator<<(std::ostream& (*)(std::ostream&))'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0xa6): undefined reference to `std::ios_base::Init::~Init()'
      C:\Users\user\AppData\Local\Temp\ccyaZDeh.o:hello.cpp:(.text+0xc7): undefined reference to `std::ios_base::Init::Init()'
      collect2.exe: error: ld returned 1 exit status
      [Finished in 0.7s]

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.04 10:51 신고


        명령프롬프트에서 g++ 파일이름.cpp -o main 으로 컴파일되나보세요.
        문제가 있다면 mingw 설치가 잘못된것입니다.

    • 농구곰 2019.05.04 11:35


      명령 프롬프트에 뭐라고 명령어를 써야하나요???
      g++.cpp -o main라고 쓰면 되나요???

    • 농구곰 2019.05.04 11:49


      질문이 많은데 답변 잘해주셔서 감사합니다.
      학부 초보자인데 작품 만드려다 보니 참고를 많이 하게되어서요 ㅠㅠ
      비쥬얼스튜디오에서 main.cpp를 생성후 해야한다는 건가요???

    • 농구곰 2019.05.04 12:02


      C:\Users\user>g++ main.cpp -o main
      g++: error: main.cpp: No such file or directory
      g++: fatal error: no input files
      compilation terminated.
      이렇게 떠서 c드라이브 user에 들어가 메모장을 main.cpp로 만들긴 했는데 작동이 안됩니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.04 12:05 신고


        dir 명령을 입력해서 main.cpp 이름을 확인해보면 main.cpp.txt로 되있을듯합니다.

        맞다면 다음 명령으로 이름을 바꾸고 다시 g++로 컴파일 해보세요.
        rename main.cpp.txt main.cpp

    • 농구곰 2019.05.04 13:07


      C:\Users\user>g++ main.cpp -o main
      c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
      collect2.exe: error: ld returned 1 exit status

      main.cpp 바꾸고나서 다시 명령 프롬프트에 실행하였더니 이렇게 에러가 납니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.04 13:10 신고


        이상하군요..기존에 설치한 mingw 삭제하고 다음 링크에서 64비트용 설치후 해보세요.

        https://sourceforge.net/projects/mingw-w64/

    • 농구곰 2019.05.04 13:12


      네 다시 깔아보고 해보겠습니다
      답변 잘해주셔서 감사합니다!!!

    • 농구곰 2019.05.04 13:27


      메모장에 아무것도 안적고 main.cpp로 c드라이브에 저장했는데
      webnautes 님이 말씀한것처럼 main.cpp.txt로 돼 있어서 명령 프롬프트에 rename main.cpp.txt main.cpp를 쓰니
      main.cpp파일로 저장되 있더군요 그래서 다시 g++ main.cpp -o main를 명령하니
      c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../libmingw32.a(main.o):(.text.startup+0xa0): undefined reference to `WinMain@16'
      collect2.exe: error: ld returned 1 exit status 이런 에러가 떳습니다

      • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.04 13:28 신고


        그래서 에러가 났군요.. 3-1에 있는 코드를 파일에 복사해줘야 합니다.

      • 농구곰 2019.05.04 13:33


        아 메모장에 3-1을 복사후 그다음 main.cpp를 만들어야 하는군요
        앗앗 다시해봐야겠습니다
        감사합니다!!!!

    • 농구곰 2019.05.04 13:31


      MinGW 다시 깔고 있는데 원래 블로그에서 설명하신 설치 방법에는 MinGW - Windows 용 미니멀 GNU를 설치하라고 하셨는데
      지금 알려주신 파일은 MinGW-w64 - 32 비트 및 64 비트 Window 인데 다른 파일인가요???

    • 김영빈 2019.07.07 17:42


      안녕하세요 sublime text3 잘 설치했습니다.

      혹시 반복문(for, while 등..)을 실행하면 한번만 실행되고 종료되는 이유를 알고 계신가요?

Designed by Tistory.