---
# System prepended metadata

title: Setup Environment

---

# Setup Environment

## Install Winodws Subsystem Linux

- `wsl --install -d ubuntu`

** if error **
- make sure hyper-v is enabled in windows feature (use windows search: `turn windows features on or off`)
- make sure virtualization is enabled in bios (Go to your computer bios)

** if older version of windows **
- Follow instructions on [Official Guide](https://learn.microsoft.com/en-us/windows/wsl/install)

- Once installed, you will notice a linux icon on your windows explorer ![](https://i.imgur.com/nRB8nEk.png)
- That is where the linux system is mounted, you can access file from there like a normal linux system
- to open a terminal of wsl, just open terminal and run `wsl`
- update and upgrade, then apt install `build-essential` for gcc and `manpages-dev` for man page.

## Connect vscode to WSL
- install vscode
- Install `Remote Development` package [Link](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)

- Go to your ubuntu root mouting point: `\\wsl.localhost\Ubuntu\`
- find your folder you want as working environment, I use `/home/shane/c`

- Now you have a folder for your sorce, go to vscode, click on green button on left bottom corner, select `new wsl window` 
- On vscode's explorer, select `open folder`, finally find the folder you just created
- now you can edit and run code as if you are on linux


### GDB, Valgrind

- Compile: `gcc -o <outfile> -g -std=c11 -Wall <source.c>`
- `-g` is for gdb
- `-Wall` is for valgrind

- [GDB dashboard](https://github.com/cyrus-and/gdb-dashboard)

- `break`, `step`, `next`, `continue`
- `print`

- More [cheatsheet](https://darkdust.net/files/GDB%20Cheat%20Sheet.pdf)

### Valgrind
- `valgrind --leak-check=full --show-leak-kinds=all --track-origins=yes ./a.out`
- 