2020년 5월 MS에서는 윈도우10의 2004버전(빌드 19041)을 발표했습니다.
이번 발표의 핵심은 단연코 "WSL2"가 아닐까 싶습니다.
강력하지만 아직 주력으로 사용하기에는 부족함이 많았던 기존의 WSL이 발전되고 편리해져서 돌아왔습니다. 이제 Vmware나 virtualBox 가상환경을 이용하지 않고도 윈도우 하나만으로 리눅스 개발환경을 경험할 수 있습니다. 지금부터 방법을 하나씩 다뤄보도록 하겠습니다.
Microsoft store
에 들어가서 원하는 리눅스 OS 이미지를 다운로드 받습니다. 20.04LTS
까지 배포하고 있습니다.18.04
를 설치했습니다.wsl --list --verbose
또는 wsl -l -v
를 입력해서 설치된 WSL 버전을 확인합니다. (본 명령어는 Window10 2004 버전에서 사용할 수 있습니다.)dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
를 입력해서 앞으로 설치될 모든 리눅스의 기본 wsl 버전을 '2'로 설정합니다. 만일 아직 리눅스가 설치되어있지 않다면 이제 설치하시면 됩니다. wsl --list --verbose
를 입력해서 현재 설치된 리눅스 가상 OS의 WSL 버전을 확인합니다. version
이 1
이라고 나온다면wsl --set-version <distribution name> <versionNumber>
을 입력해서 버전을 업데이트 해줍니다.wsl --set-version myUbuntu 2
이런식으로 말이죠.~/cppDirectory/project1
이라는 경로에 간단히 프로젝트 폴더를 만들어봤습니다. (Easy C++ Projects라는 extension을 사용하면 더 편리합니다)EACESS Permission denied
오류가 발생했지만 WSL2에서는 발생하지 않습니다.F1
을 눌러 콘솔창을 연 뒤 C/C++:Edit
까지 치면{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "gnu11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
ctrl+shift+B
를 누르면 컴파일을 수행합니다. 물론 아직 task
를 설정하지 않았기 때문에 현재로써는 상단에 콘솔창이 뜰 뿐입니다.Tasks: Configure Default Build Task
를 누르면 tasks.json
파일이 열립니다. 다음처럼 수정해줍니다.{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
ctrl+shift+B
를 누르면 정상적으로 컴파일이 수행됩니다.디버깅을 사용하지 않는다면 굳이 이런 귀찮은 일련의 과정을 거쳐가며 VSCode를 사용할 필요가 전혀 없습니다. 그냥 repl.it
같은 리눅스 기반 온라인 IDE써서 GDB 돌리면 되니까요. 하지만 저희는 visual studio의 그 변수 하나하나 값을 찍어볼 수 있는, 눈에 확 들어오는 디버깅을 원하므로(저만 그런가요?ㅎㅎ) 마지막까지 설정해줍시다.
F5
를 누르면 C/C++
extension은 자동으로 현재 경로와 앞서 설정한 세팅에 맞는 적절한 디버깅 설정을 알아서 해줍니다.launch
를 입력해서 launch.json
을 open합니다.{
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"preLaunchTask": "g++ build active file",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/usr/bin/gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
preLaunchTask
항목의 string과 tasks.json
의 task label
의 string이 동일해야 한다는 점입니다. 디버깅에 앞서 빌드/컴파일을 먼저 수행하기 때문입니다.F5
를 눌러서 디버깅을 실행해봅시다.DEBUG CONSOLE
의 저희가 설정한 name
대로 탭이 생성되며 GDB가 실행됩니다.TERMINAL
터미널 탭에서 확인 가능합니다.VMWare
로 우분투
설치하고 거기서 Visual studio
로 코딩하기도 하고Repl.it
, 구름IDE
같은 온라인 IDE 오고다니기도 하고Repl.it
- 현존하는 온라인 IDE중에 가장 좋다고 자신합니다.구름 IDE
- 국내 IDE에 성능도 좋고 여러모로 IDE 본질에 충실한 점이 맘에 쏙 듭니다. 근데 인텔리센스(intellisense)가 없고 notepad++급의 자동완성이라는 점이 아쉽습니다...심지어 notepad++도 인텔리센스를 지원하는데...라즈베리파이4
들고다니면서 Dev C++
로 코딩하기도 했습니다.
좋은 글 잘봤읍니다 ^^