잡다한 시리즈/Visual Studio Code

VSCode 설정 - (2) C/C++ 컴파일러 설정 (MINGW)

GGOBOOGI 2019. 3. 29. 02:22
반응형

^^... 고난의 길 시작이다. 작년에 C/C++ 설정하다가 진짜 화딱지가 엄청 났었는데... 그걸 기록을 안해놔서 다시 그 길을 걸을 수도 있다. 젭알 한번에 되도록 해주십쇼 선생님. 시작해 보도록 하자.


먼저 C/C++ 설정을 하다 보면 잘 되는지 안되는지 테스트를 해야 하므로 작업을 할 폴더를 하나 열도록 하겠다.

 

현재 아무 폴더가 안열려있다면 폴더 열기 버튼을 누르면 된다.

폴더가 열려있는데 새로 열고 싶다면 위의 메뉴를 이용하라.

이제 폴더를 열었다면 우리가 할 일은 코드를 작성하는 것이 아니라! 컴파일러부터 설치하는 것이다.

편집기는 기본적으로 디버깅이나 컴파일, 실행 기능을 제공하지 않는다. 확장을 설치하여 해당 기능을 하도록 설정하지 않으면 그냥 좀 예쁘고 깔쌈한 메모장이랑 다름 없다는 말이다. 고로, 먼저 컴퓨터에 VSCode와 연결하여 쓸 C/C++ 컴파일러를 설치해야 한다.(이것이 오지고 지리는 고난의 길이다)

 

그렇다 윗문단까지 쓸 때가 12시 좀 넘어서였는데 설치 완료한 지금 1시 45분이다. 그렇다 또 헤멨다.

 

아래에는 까먹기 전에 나의 시행착오를 적겠어요...

 

**참고로 설치 환경은 Visual Studio나 다른 기타 컴파일러가 포함된 프로그램이 아예 깔려 있지 않은 클-린-한 상태에서 시작하였다. Visual Studio가 설치되어 있는 경우 Visual Studio 컴파일러가 VSCode에 딸려 올 수도 있으므로 그거슨.....나중에 내가 그런 경우가 생기면 업데이트 하도록 하겠어요....**


일단 나는 예전에도 몇번 vscode에서 c/c++ 설정을 한 적이 있었다.(그러나 그 시도 중 단 한번도 한번에 된 적이 없었지)

그때 가장 골치가 아팠던건 컴파일러로 MINGW를 썼었고(버전은 기억 안남 6.*.*였던듯) C에서는 별 문제가 없었는데 C++에서 기본 자료형인 string을 이샛기가 인식을 못해서 애를 먹었다. 그때도 결국 MINGW를 업글해서 문제를 해결했었던 기억이 있는데, 너무 그때 설치를 덮어쓰고 덮어쓰고 해서 빡쳤던 기억이 있다.

 

그!래!서!

이번엔 그런 실수를 다시 안 하기 위해 내가 겪었던 이슈를 가진 똑같은 사람들을 설치 전 먼저 찾았다.

https://github.com/Microsoft/vscode-cpptools/issues/1248

 

Cannot debug C++ codes with string variables defined · Issue #1248 · Microsoft/vscode-cpptools

OS: Windows 10, Version 1703 VS Code version: 1.18.0 no Insiders build C/C++ extension version: 0.14.2 Other extensions: Extension name Author Version ESLint Dirk Baeumer 1.4.3 Python Microsoft 0.8...

github.com

그렇다. 이것이다. 이것이야! 예전에 나를 괴롭히던것!

그러나 이곳엔 갓유저가 있었으니..

흑흑 선생님들 감사합니다.

당장 MINGW 6버전은 집어치우고 7버전을 깔도록 하자. 밑에 제리 선생님께서 최신 MINGW버전 다운받을 수 있는 링크도 친절하게 주셨다.

 

해당 링크를 타고 타고 들어가면 결국 여기서 MINGW 설치 파일을 받을 수 있다. 다운을 받도록 하자.

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

 

MinGW-w64 - for 32 and 64 bit Windows

Download MinGW-w64 - for 32 and 64 bit Windows for free. A complete runtime environment for gcc. The mingw-w64 project is a complete runtime environment for gcc to support binaries native to Windows 64-bit and 32-bit operating systems.

sourceforge.net

다운을 받고 설치를 시작해 보면 아주 중요한 부분이 나온다. 그것은 바로 이것.

바로 버전과 시스템 아키텍쳐를 선택하는 것인데, 작성 일자 기준(2019.03.29) 버전은 8.1.0인가 까지 나와있었지만 쫄보인 나샛기는 위의 선생님께서 말씀해주신 7.2.0을 설치하였다^^ 아키텍쳐는 i686이랑 x86_64를 선택할 수 있는데, i686은 32bit를, x86_64는 64bit를 의미하기 때문에 본인의 운영체제가 32bit 체제가 아니라면 x86_64를 선택하도록 하자. 그리고 설치를 한다. 꽤 오래 걸린다.

 

설치를 완료하면 시스템 환경변수 편집>환경 변수>시스템 변수>PATH 에 밑에 나와있는 요런 아이들이 있는 경로를 추가해 주어야 한다. 나의 경우에는 MINGW가 설치된 폴더로 이동하여 mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin 여기였다. 이걸 환경 변수에 새로 추가해 준다.

그리고 환경변수가 제대로 적용되었는지 확인하기 위해 cmd를 켜고 gcc -v 와 g++ -v를 입력해 본다. 

뭐라고 뭐라고 나오고

이렇게 둘 다 자신이 설치한 버전이 제대로 적용된 것이다. 

 

 

여기까지 다 하면! 두근두근ㄷ구늗ㄱㄴ드구ㅡㄴㄷ한 마음으로 VSCode를 켜고 CTRL+N을 눌러 새 파일을 만들고 바로 CTRL+S를 눌러 파일 이름을 지정하며 확장자를 .c 와 .cpp 로 설정한 두 개의 파일을 만든다.

 

그리고 가장 기본적인 코드를 적는다. 그거슨 헬로월드

//hello.c
#include<stdio.h>

int main()
{
    printf("hello world\n");
    return 0;
}
//hello2.cpp
#include<iostream>
using namespace std;

int main()
{
    cout<<"hello world!"<<endl;
    return 0;
}

아마 얘네를 열심히 적고 있으면 VSCode 오른쪽 하단에 "야 너 내가볼때 아무래도 C/C++ 확장 기능이 필요한 것 같아!!! 눌러서 설치해!!!" 라고 나댄다. 조용히 설치를 해 준다. 꼭 필요한 확장이다.

보통 다른 컴파일러가 설치되어 있는 경우 얘의 tasks.json이랑 launch.json의 세부 사항 수정에 굉장히 애를 많이 먹는다.

근데...오늘은...웬일이얌....계탔어.... mingw bin폴더 경로가 그냥 있어! 알아서! <<도움이 되지 못해 죄송합니다.

코드를 다 작성하고 CTRL+F5를 누르면 디버그없이 실행할 수 있다. 이렇게 하면 작업 폴더에 해당 코드 이름.exe 파일이 생성되고 자동으로 이 .exe 파일을 실행시켜준다.

그러면 터미널에....! 헬로월드가..!(검은 줄 죄송함다 내 정보는 소듕해)

 

(이렇게 한번에 된 적 처음)

설레는 마음으로 C++ 코드도 CTRL+F5키를 눌러보았다.

그런데 ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ ㅎ 아 캡쳐가 없는게 너무 아쉽다

터미널에 뭐 아까처럼 실행되는것처럼 오질나게 뜨더니 아무런 출력 없이 프로세스가 끝나버렸다.

띠용?

당황쓰. 옆에 디버그 콘솔에 가서 살펴봤더니 YEAH 오류님이 발생하셨습니다.

 

지금 정확한 오류는 기억이 안나는데 구글링한 나의 흔적을 살펴보면

Unexpected GDB output from command "-exec-run".During Startup program exited with code 0xc0000135

이런 오류였다. 열심히 구글링을 했다. 슬펐다.

 

처음에는 닷넷이 안깔려서 그렇다는 둥 여러 답변이 있었지만, 내 윈도우에는 닷넷 4.0 버전도 설치되어 있었고 3.5버전도 설치되어 있어서 닷넷 문제는 아니었다.

 

그런데 이번에도 존경스러운 선생님이 계셨다.

https://stackoverflow.com/questions/33536614/c-qt-libxl-error-during-startup-program-exited-with-code-0xc0000135

 

C++ QT libXL Error: "During Startup program exited with code 0xc0000135"

I am trying to write a QT application that uses libXL, but when I try to compile, I get a pop up box saying "During Startup program exited with code 0xc0000135". I have figured out exactly which l...

stackoverflow.com

This worked!라니!!!! 선생님의 말씀대로 VSCode가 참조하는 MINGW의 bin 폴더에 가보니 libxl.dll이 없었다. 세상에마상에.

그리고 libxl.dll을 설치하러 출발쓰.

http://www.libxl.com/download.html

 

LibXL download

LibXL for Windows 3.8.4   (2018-12-18) Download Size: 17 276 014 bytes MD5: DB56221D3A9C4B98B8F8257C5D5C1EFC LibXL for Linux 3.8.4   (2018-12-18) Download Size: 14 138 156 bytes MD5: 0DA2BF8D15B800575EAB899840911D37 LibXL for Mac 3.8.4   (2018-12-18) Downl

www.libxl.com

여기서 윈도우꺼 다운받고 압축 푼 다음에 bin64 폴더에 있는 libxl.dll을 MINGW의 bin 폴더에 복사하고, VSCode를 껐다가 다시 켰다. (VSCode는 껐다가 다시 켜야 새로운 환경이 적용되는 경우가 많은듯)

그리고 두근두근하는 마음으로 CTRL+F5를 눌러보았다.

 

This worked!!!!!!!!!!!!!!!! 선생님 감사합니다. 정말요.

 

string 변수도 테스트해봤는데 무리 없이 잘 된다. 만세다.

 

CTRL+F5는 디버깅 없이 실행이고 그냥 F5를 누르면 디버깅인데 브레이크 포인트 만들어 두면 왼쪽 디버깅 쪽에 잘 뜬다.

신난다.

오늘 할일 다했다.

그렇다. 새벽 2시 반이다.

반응형