The simple setup to learn Linux programming that surprises me.

·

3 min read

The simple setup to learn Linux programming that surprises me.

As an embedded engineer, I often need to practice Linux programming on my Windows laptop. I believe that installing a distro directly into the system is superfluous and somewhat complex.

I have since discovered WSL, which is more practical. Thus, I make a few notes about how to configure the system to run and build code.
This is for people who already know how to do it but struggle to make it work.
1. Use virtual machine
Firstly, I remind everyone about the old-school method with VM
You need Virtual machine with an Ubuntu distro. I choose Kubuntu because I think it is less prone to errors than Ubuntu (just my personal experience).

Install ssh to Ubuntu, then enable it
The most important part is setting up Network in VM

The guess IP is the IP in Ubuntu you get from the ifconfig command.
You can test the connection in command window

Now open VSCode or Visual Studio, install the SSH extension, and create a new one. Use the same command as above, and you are good to write code.

2. Use WSL

WSL stands for Windows Subsystem for Linux. In short, it works like below:

Image description

This is the best tutorial on how to install WSL and connect it with VSCode. Just follow it.

Now that you can access a Linux system using WSL, we come to the most important part: compile and run/debug source code.
You need to create a Hello World.cpp file inside WSL to test.
We need tasks.json file to compile the code in Linux and a launch.json file to debug.

You can search these files using Ctrl Shift P command

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "compiler: /usr/bin/g++"
        }
    ]
}

Install gdb to Linux using command

sudo apt install gdb

Now check where gdb is

Image description

Configure launch.json file and update miDebuggerPath with the path you get

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "MIMode": "gdb",
            "cwd": "${fileDirname}",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set Disassembly Flavor to Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++ build active file"
        }
    ]
}

To compile code, use Ctrl Shift B

Image description

To debug, use Run > Start Debugging

Image description

Everything should be okay now. Enjoy!