Как скомпилировать программу? То filesystem не видит, то sqlite не линкует
Столкнулся с проблемой:
kali ~ # cat main.cpp
...
#include <filesystem>
#include <sqlite3.h>
namespace file = std::filesystem;
...
kali ~ # ls /usr/bin/g++
/usr/bin/g++ -> g++-11
kali ~ # ls /usr/bin/aarch64-linux-gnu-g++
/usr/bin/aarch64-linux-gnu-g++ -> g++-11
kali ~ # g++ main.cpp -lsqlite3 -o main
# OK
kali ~ # g++ main.cpp -lsqlite3 -o main -static
/usr/bin/ld: /usr/lib/gcc/aarch64-linux-gnu/11/libstdc++.a(locale_init.o): in function `std::locale::locale()':
(.text._ZNSt6localeC2Ev+0x54): undefined reference to `pthread_mutex_lock'
...
kali ~ # apt list | grep musl
musl [installed]
musl-dev [installed]
musl-tools [installed]
kali ~ # g++-10 main.cpp -o main -lsqlite3 -static -lstdc++-17
main.cpp:12:23: error: ‘filesystem’ is not a namespace-name
12 | namespace file = std::filesystem;
kali ~ # nano main.cpp
kali ~ # g++-10 main.cpp -o main -lsqlite3 -static -lstdc++-17
main.cpp:12:23: error: ‘std::fs’ has not been declared 12 | namespace file = std::fs::filesystem;
Я пробовал и менять namespace file, и экспериментировать с компиляторами - без толку! Без -static g++-то спокойно компилирует, только вот мне принципиально надо -static, musl благо уже стоит. Есть и libsqlite3.a, и libc.a, и libstdc++.a.