C 언어를 처음 공부할 때, 그냥 손에 잡히는 비주얼 스튜디오(Visual Studio)를 쓰긴 했었는데, 지금 돌이켜 생각해 보면 닭을 잡는 데 소 잡는 칼을 쓰는 느낌의 과분한 IDE였다. 비주얼 스튜디오는 상당히 무거운 사이즈를 차지하고 있기 때문에, 그냥 C 언어를 실행시키는 용도라면 크게 적합하지 않다! 또한 scanf 대신 scanf_s를 사용하게 한다거나, C 언어로 쓰인 코드를 실행시키는데, 빈 프로젝트를 만들고.. 번거로운 과정이 꽤나 있다.
C 언어를 실행하는 다양한 방법이 있지만, 그중 개인적으로 선호하는 방법은 vscode에서 C를 실행시킬 수 있는 환경을 갖추는 것이다. 사람마다 환경이 다르겠지만, 필자는 Jetbrains의 IDE로 자바 및 자바스크립트 환경 개발하며, 전공 수업에서 C를 가끔씩 쓰곤 하는데, 이때 vscode를 활용한다. 이런 식으로 가볍게 C를 사용하는 경우라면 vscode를 추천한다.
이번 포스팅에서는 MacOS 및 Windows에서 C의 실행하는 방법에 대해서 다룬다.
본론
제목에는 vscode를 통해 c를 실행하는 방법이라고 쓰여 있지만, 이번 포스팅에서 주로 다룰 것은 gcc를 사용하는 방법이다. 순서는 GCC의 설치, Vscode에서 C/C++ 확장 플러그인을 설치해서 최종적으로 vscode에서 C를 실행할 수 있게 한다.
GCC를 사용하는 방법
GCC(GNU Compiler Collection)는 리처드 스톨먼의 자유 소프트웨어 재단에서 진행중인 OS 프로젝트인 GNU에서 내놓은 오픈소스 컴파일러 컬렉션이다. 유닉스 계열 플랫폼의 표준 컴파일러라고 볼 수 있는데, C를 컴파일할 수 있는 명령어를 제공한다(gcc) 따라서 GCC를 통하여 C를 실행시킬 수 있다.
C를 컴파일하면, 어셈블리어로 쓰인 실행가능한 파일이 생성된다. Mac에서는 .out 확장자, Windows에서는 .exe 확장자 파일이 생성되는데, 이러한 컴파일하는 과정을 도와주는 것이 GCC이다. 어셈블리어는 기계어(CPU)와 1대1로 매칭되기 때문에 CPU의 환경에 따른다. 추후 설명하겠지만 CPU에 맞는 GCC 파일을 다운로드해야 한다.
MacOS를 사용하는 경우
터미널에 다음 코드를 입력한다.
xcode-select --install
MacOS에서는 xcode를 설치하면 다양한 유틸리티를 제공해 주기 때문에, xcode를 설치하여 gcc를 활용할 수 있게 된다.
Windows를 사용하는 경우
윈도우를 사용하는 경우에는 MinGW를 이용해야 한다. MinGW(Minimalist GNU for Windows)는 이름 그대로 윈도우에서 사용할 수 있는 MinGW를 의미한다. 다음 사이트에 방문하여 w64devkit을 다운로드한다. w64devkit을 설치하는 이유는 UNIX계열의 유틸리티를 사용할 수 있게 하기 위함이다. 해당 키트는 GCC 외에도 Vim이나 busybox 등의 유틸리티를 제공한다.
- MinGW 다운로드 : https://www.mingw-w64.org/downloads/
해당 사이트를 들어가면 현재(2023.10.20) 기준으로는 다음과 같은 설치 파일이 뜬다. 아래 사진의 Assets 중 자신에게 맞는 파일을 다운로드한다. C를 컴파일하면 CPU의 기계어와 매칭되는 어셈블리어로 변환하는 과정이 있기 때문에 본인의 CPU에 맞는 환경의 파일을 다운로드해야 한다!!
필자는 64-bit의 윈도우 환경에 fortran을 사용하지 않기 때문에 위에서 두 번째 파일을 다운로드하여 압축을 풀었다. 압축을 풀면 다음 사진과 같은 파일을 볼 수 있다.
여기서 bin 폴더를 확인하면 다양한 파일이 들어있는데, 개발을 했다면 몇몇 개는 어디선가 본 적이 있을 것이다. UNIX 계열인 리눅스에서는 기본적으로 제공하는 명령어들인데, Windows OS와 UNIX 계열 OS는 조상이 다르기 때문에 윈도우에서 사용할 수 없는 명령어들인데, MinGW에서 윈도우에서 UNIX 계열 명령어를 사용할 수 있게 유틸리티를 제공한 것이다. 그러한 명령어들이 파일로 bin 폴더 안에 들어있는 것이다.
위 사진에서의 w64devkit.exe를 실행시키면 bin 폴더 내에 있는 명령어들(vi, gcc)을 실행시킬 수 있다. 하지만 윈도우 자체의 powershell이나 명령 프롬프트를 통해서 실행시키면 bin 폴더 내에 있는 명령어들을 사용할 수 없는데, 윈도우의 OS에서 해당 명령어들을 인식할 수 없기 때문이다. 따라서 앞으로 OS에게 우리가 터미널에서 UNIX 계열 명령어를 쓸 때, 해당 bin 폴더에 있는 유틸리티를 통해서 명령어를 인식할 수 있게 해주는 과정을 거쳐야 한다.
따라서 해당 폴더(w64devkit)의 위치를 Program Files로 옮겨준다. 그렇다면 bin 폴더의 위치는 C:₩Program Files₩w64devkit₩bin이 될 것이다.
이제 윈도우에 찾기에서 시스템 환경 변수 편집 항목으로 들어간다.
왼쪽의 창에서 환경 변수(N)... 버튼을 누르면 오른쪽 창이 뜨는데, 시스템 변수(S)에서의 Path를 누른다.
그다음 새로 만들기(N)를 눌러 bin 폴더의 위치인 C:₩Program Files₩w64devkit₩bin를 추가해 준다. 이제 OS는 bin 파일 내에 있는 다양한 명령어를 인식하여 실행시킬 수 있게 된다. 이제 윈도우에서 명령 프롬프트나 파워셸을 열어 gcc 명령어를 입력하면 컴퓨터는 gcc 명령어를 이해할 수 있게 된다.
터미널(명령 프롬프트나 파워쉘 등)을 통해서 gcc --version 명령어를 통해 gcc의 설치를 확인할 수 있다. 이제 vi 명령어를 통해서 순수하게 터미널 상에서 C 코드를 작성하고 실행시켜 보자. vi는 유닉스 계열의 모든 운영체제에서 사용하는 편집기다. vi 명령어에 대한 자세한 설명은 이번 포스팅에서 생략한다.
GCC CLI를 통한 C언어 실행
자, 이제 gcc나 vi와 같은 명령어를 사용할 수 있게 되었다. 원하는 디렉터리에서 vi test.c 명령어를 통해 test.c 파일을 편집한다. 위와 같이 파일의 내용을 입력하고 :wq를 통해서 파일을 저장하고 종료한다. 그 후 윈도우 기준으로 다음 명령어를 통해서 파일을 실행시킬 수 있다.
MacOS 기준이라면 다음과 같은 명령어를 이용한다.
gcc test.c && ./a.out
이제 복잡한 과정을 끝내 C 언어를 컴파일할 수 있게 되었다! ( MacOS 사용자라면 복잡한 과정은 아니었을 것이다 ) gcc가 C를 컴파일하는 여러 가지 과정을 통해서 윈도우는 a.exe라는 실행 파일이 생성되고, 맥에서는 a.out이라는 파일이 생성된다. 해당 생성 파일을 실행시키면 C로 작성한 코드를 실행시킬 수 있게 된다.
이렇게 C를 컴파일 및 실행할 수 있는 환경은 갖추었다. 검은 터미널 화면에서 C 코드를 짤 수는 없을 노릇이 아닌가? 이제 vscode를 연결해 보자.
위 사진에 있는 C/C++ extension을 설치하면 이제 vscode에서 C 코드를 작성한 후 실행 및 디버그를 실행하면 C 언어를 실행시킬 수 있다.
이 외에도, vscode에서 C 코드를 실행시키는 과정에서 실행 버튼이 없어서 번거롭다면 Code Runner라는 플러그인을 추천한다. 해당 플러그인을 설치하면 우측 상단에 빌드 및 실행 버튼이 생기게 된다.
웹을 이용하는 방법
굳이 GCC까지 설치해서 C 언어를 컴파일할 필요가 없을 것 같다면 C 컴파일 환경을 지원하는 웹을 이용하는 것도 방법이다. 다음과 같은 사이트들이 있다.
- Repl.it
- OnlineRDB
- JDoodle
위 사이트에 접속하면 쉽게 C를 제외하고도 다양한 언어를 웹사이트에서 실행시킬 수 있다.
마치며
맥에서는 사실 비주얼 스튜디오가 없어 반 강제적으로 vscode를 이용해야 한다. 윈도우에서도 아마 높은 확률로 비주얼 스튜디오를 꼭 사용해야 할 이유가 없을 것이다.
비주얼 스튜디오는 심도 있는 C의 작동 원리를 분석하기에는 굉장히 좋은 툴이지만, 단순한 C 컴파일 & 실행 용도라면 무거운 비주얼 스튜디오를 사용하는 것보다 vscode를 사용하는 것을 추천한다.