Невозможно использовать `std::filesystem`, даже если объявлено поддерживаемым
Последние версии GCC и clang поддерживают std:: filesystem (++) C++17.
Почему эта программа не компилируется?
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::create_directories("sandbox/1/2/a");
fs::create_directory("sandbox/1/2/b");
// fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all);
fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b");
std::system("ls -l sandbox/1/2");
fs::remove_all("sandbox");
}
Я протестировал его с последними версиями компилятора от онлайн-компилятора со следующими параметрами компилятора:
clang++ prog.cc -Wall -Wextra -std=c++17
g++ prog.cc -Wall -Wextra -std=c++2a
От Clang я получаю следующие ошибки компоновщика:
/tmp/prog-9b6259.o: In function `main':
prog.cc:(.text+0x48): undefined reference to `std::__1::__fs::filesystem::__create_directories(std::__1::__fs::filesystem::path const&, std::__1::error_code*)'
prog.cc:(.text+0xad): undefined reference to `std::__1::__fs::filesystem::__create_directory(std::__1::__fs::filesystem::path const&, std::__1::error_code*)'
prog.cc:(.text+0x12f): undefined reference to `std::__1::__fs::filesystem::__create_directory(std::__1::__fs::filesystem::path const&, std::__1::__fs::filesystem::path const&, std::__1::error_code*)'
prog.cc:(.text+0x1b5): undefined reference to `std::__1::__fs::filesystem::__remove_all(std::__1::__fs::filesystem::path const&, std::__1::error_code*)'
clang-8: error: linker command failed with exit code 1 (use -v to see invocation)
1
Если я разлагаю строку с помощью fs:: permissions, я получаю эту ошибку времени компиляции:
prog.cc:11:49: error: no member named 'remove_perms' in 'std::__1::__fs::filesystem::perms'
fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all);
~~~~~~~~~~~^
Я получаю похожие ошибки от GCC.
Что я делаю неправильно? Возможно ли, что эти компиляторы поддерживают язык C++17, но не его библиотеки в целом?