728x90
반응형
이번글에서는 윈도우 환경에서 C 언어로 작성된 프로그램을 컴파일하고 실행하는 방법에 대해 알아보겠습니다.
리눅스 환경에서 윈도우환경에서 gcc 설치후 C 코드 컴파일하고 실행 방법에 대해 소개 하도록 하겠습니다.
환경 구성
Window 10 환경에서 VS Code 와 Mingw 를 설치하도록 하겠습니다.
- 윈도우 10
- Visual Studio Code (VS Code)
- GCC 8 (Mingw)
GCC 8설치
아래 경로에서 다운로드를 받습니다.
Installer 도 있지만 설치시 제 환경에서는 에러가 발생해서 바이너리 다운로드후 압축 해제 했습니다.
https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/
하단 스크롤 하면 다운로드 매뉴가 나옵니다.
- 다운로드 받은 바이너리를 C Drive 에 폴더를 생성하고 압축을 해제 합니다.
- mingw64 -> x86_64-8.1.0-release-win32-seh-rt_v6-rev0.7z 바이너리 압축 해제
윈도우 환경 변수 설정
- 시스템 -> 시스템 속성 -> 환경 변수 -> 환경 변수 편집 -> C:\mingw64\bin 추가
GCC 설치 버전 확인
- Win + R 버튼 클릭후 cmd 창에서 설치 버전을 확인 합니다.
C:\>gcc --version
gcc (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
C:\>g++ --version
g++ (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gcc (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
C:\>g++ --version
g++ (x86_64-win32-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Visual Studio Code (VS Code) 설치
아래 경로에서 Visual Studio Code 를 다운로드 받습니다.
https://code.visualstudio.com/
VS Code 실행 및 C/C++ 확장 팩을 설치
- VS code 가 설치가 완료 되었다면 c/c++ 확장팩 설치를 진행 합니다.
- Ctrl + Shift + x
- C/C++ Extension Pack
VS Code C 컴파일 환경 설정
- Ctrl +Shift + P -> c/c++ Edit configurations 검색 -> 톱니바퀴 클릭
gcc 컴파일 경로 설정
- UI 화면에서 설정을 변경 할수 있도 있고 c_cpp_properties.json 버튼을 클릭 하면 파일 에서 직접 수정 할수도 있습니다.
C/C++ 환경 설정
- 컴파일러 경로 설정
- IntelliSense 모드 설정
- Include 경로 추가
- c_cpp_properties.json 파일
{
"configurations": [
{
"name": "Win32",
"includePath": [
"C:/Program Files (x86)/Windows Kits/8.0/Include/um",
"C:/Program Files (x86)/Windows Kits/8.0/Include/shared",
"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include",
"C:/mingw64/lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-gcc-x64",
"browse": {
"path": []
},
"compilerPath": "C:/mingw64/bin/gcc.exe",
"compilerArgs": []
}
],
"version": 4
}
빌드 환경 구성
- F1 버튼 클릭 -> Task: Configure Default build Task 검색
- tasks.json 편집 (gcc 설치한 디렉토리로 설정 합니다.
{
"version": "2.0.0",
"runner": "terminal",
"type": "shell",
"echoCommand": true,
"presentation": {
"reveal": "always"
},
"tasks": [
{
"label": "save and compile for C++",
"command": "g++",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": "build",
"problemMatcher": {
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"label": "save and compile for C",
"command": "gcc",
"args": [
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": "build",
"problemMatcher": {
"fileLocation": [
"relative",
"${workspaceRoot}"
],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
},
{
"label": "execute",
"command": "cmd",
"group": "build",
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}"
],
"problemMatcher": []
},
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 활성 파일 빌드",
"command": "C:\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"-lm",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "디버거에서 생성된 작업입니다."
},
{
"type": "cppbuild",
"label": "C/C++: g++.exe 활성 파일 빌드",
"command": "C:\\mingw64\\bin\\g++.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": "build",
"detail": "디버거에서 생성된 작업입니다."
},
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 활성 파일 빌드",
"command": "C:\\mingw64\\bin\\gcc.exe",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"-lm"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "test"
}
]
}
C 코드 테스트
기본 테스트
test.c 파일 을 만들어 테스트 코드를 작성합니다.
#include <stdio.h>
int main()
{
printf("Hello, world!\n");
printf("C Program Compile Test \n");
return 0;
}
실행 매뉴 버튼 클릭후 테스트 코드를 컴파일 및 실행 합니다.
- 디버깅 없이 실행 (Ctrl+F5)
테스트 결과
입력변수 설정을 통한 컴파일 및 실행
- 컴파일 후에 입력 변수 설정을 통해 실행을 할수도 있습니다.
- 기존에 작성했던 코드를 조금 수정 합니다.
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("1 번째 [%s]:\n",argv[1]);
printf("2 번째 [%s]:\n",argv[2]);
printf("Hello, world!\n");
printf("C Program Compile Test \n");
return 0;
}
- 테스트 프로젝트 하위 .vscode 디렉 토리 밑에 launch.json 파일을 생성 합니다.
- .vscode 디렉토리 에는 기존에 환경 설정한 tasks.json , c_cpp_properties.json 파일도 생성되어 있습니다.
- 동일 디렉토리 launch.json 파일을 만들고 환경 설정 내용을 작성 합니다.
- 입력 값은 "args": ["1 args ","2 args "], 형식으로 작성합니다.
launch.json
{
// IntelliSense를 사용하여 가능한 특성에 대해 알아보세요.
// 기존 특성에 대한 설명을 보려면 가리킵니다.
// 자세한 내용을 보려면 https://go.microsoft.com/fwlink/?linkid=830387을(를) 방문하세요.
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 활성 파일 빌드 및 디버그",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
"args": ["1 args ","2 args "],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "gdb에 자동 서식 지정 사용",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 활성 파일 빌드"
},
]
}
실행 매뉴 버튼 클릭후 테스트 코드를 컴파일 및 실행 합니다.
- 디버깅 없이 실행 (Ctrl+F5)
실행을 하면 입력 한 변수 값도 실행시에 프로그램에 전달 할수 있습니다.
728x90
반응형