$ g++ -o libcode.so code.cpp -ldl -rdynamic -shared -fPIC -std=c++20
$ g++ -o main main.cpp -rdynamic -std=c++20 -OsThe -rdynamic flag when compiling the executable adds the unused
symbols to the table so we can use the definition from the main/executable
file in the shared object's foo() call.