WSL2 : Windows Subsystem for Linux 2
VSCode : Visual Studio Code
WSL과 vscode 두 가지를 같이 접목시켜 사용할 경우, 윈도우 10 환경에서 가장 편리하게 리눅스 개발환경을 구축할 수 있습니다. WSL 설치 안내는 링크를 달아두었습니다.
설치 방법 : 윈도우 cmd를 켜고, wsl --install
을 입력하면 기본값으로 설치가 됩니다.
현재 WSL은 version 2가 default 패키지로 설치되므로, 별도의 업데이트를 거치지 않고도 WSL2을 설치할 수 있다. 버전2임을 확인하고 싶다면 wsl -l -v
를 입력해보면 됩니다.
기본값으로 ubuntu가 설치되며, 만약 우분투를 수동으로 설치해야 하는 경우에는 탐색기에 microsoft store
를 검색하여 접근한 뒤 ubuntu XX.XX LTS
를 설치하면 됩니다. 저는 ubuntu 20.04 LTS를 설치하였습니다.
WSL 계정 비밀번호 재설정
설치 과정에서 root 비밀번호를 설정해야 하는데, 나는 이 때 잘못 입력하여 단계가 넘어가버렸습니다. 다행히도 root 계정 비밀번호를 wsl 환경에서 재설정하는 방법은 간단했습니다.
- cmd 실행
ubuntu.exe config --default-user root
입력ubuntu
입력하여 실행한 후,passwd
입력하여 root 계정 비밀번호 재설정passwd 사용자_계정_이름(기본값:root)
입력하여 사용자 계정 비밀번호 재설정exit
로 나간 뒤, 다시ubuntu.exe config --default-user 사용자_계정_이름
입력하면 끝.
리눅스 환경 실행은 cmd에서 ubuntu
라고 치면 됩니다.
우분투 설치 버전 확인은 리눅스 환경에서 cat /etc/issue
를 치면 됩니다.
우분투에서 GNU 툴체인(gcc, g++, gdb와 같은 컴파일러 등 개발도구들) 설치는 다음 과정을 따라하면 됩니다.
sudo apt-get update
sudo apt-get install build-essential gdb # build-essential과 gdb를 설치하겠다.
위 과정을 통해 설치한 걸 확인해보려면 다음 명령어를 입력해보면 됩니다.
gcc --version
g++ --version
gdb --version
vscode를 설치한 뒤, vscode 내 확장 패키지 중 remote development
와 wsl
을 설치하면 준비는 끝났습니다.
vscode 좌측 하단 구석에 있는 원격 창 열기
를 클릭해주면 됩니다.
활성화되는 검색창에 wsl 이라 입력하여 connect to wsl 을 선택해주시면 됩니다.
[트러블슈팅] vscode server for wsl closed unexpectedly
위와 같이 연결하려고 했는데, 위와 같은 에러 메세지를 만나게 되었습니다. 해당 메세지가 뜨는 이유는 크게 두 가지가 있는 것으로 보입니다. 저의 경우에는 2번째 문제였습니다.
1. wsl이 켜져있는 경우:
wsl.exe --shutdown
을 통해 해결할 수 있다고 합니다.
2. docker가 default로 설정되어 있는 경우:
우선 경고문이 뜨면 ignore을 하여 접근한 뒤 아래와 같이 원격 탐색기로 접근하여 기본 배포판을 변경해주면 됩니다.
환경 설정이 잘 이루어졌는지 확인해보기 위해, 간단한 코드를 돌려보겠습니다.
vscode에서 wsl과 연결한 이후 ctrl + `을 이용하여 프롬프트를 열어주고, mkdir testwsl을 통해 폴더를 생성해 주겠습니다. 이후 hello.c 파일 생성 후 다음과 같은 예시 코드를 작성하고, 컴파일 한 뒤에 실행해 보겠습니다.
// pwd: ~/home/hwang/testwsl/hello.c
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
int main()
{
pid_t pid;
pid = fork();
printf("hello, wsl!\n");
return 0;
}
위 코드를 작성한 뒤 프롬프트를 통해 아래와 같이 컴파일하여 실행해보겠습니다.
gcc hello.c
./a.out
>>> hello, wsl!
>>> hello, wsl!
fork에 의해 위와 같이 문장이 두 번 실행되는 것을 확인한다면 제대로 설정이 이루어진 겁니다.