在Ubuntu 18.04上通过命令sudo apt install gcc g++安装的gcc/g++版本为7.5,此版本并不直接支持filesystem,如下图所示:
Ubuntu 18.04上的g++ 7.5支持experimental的filesystem,即std::experimental::filesystem,若想使Ubuntu 18.04支持std::filesystem,一种方法是升级g++,依次执行如下命令:
- sudo add-apt-repository ppa:ubuntu-toolchain-r/test
- sudo apt update
- sudo apt install gcc-9 g++-9
- # 修改软链接
- cd /usr/bin
- sudo rm gcc g++
- sudo ln -s gcc-9 gcc
- sudo ln -s g++-9 g++
测试代码test_filesystem.cpp如下:
- #include
- //#include
// g++ 7.5 - #include
// g++ 9.4 -
- int main()
- {
- //std::experimental::filesystem::path current_directory = std::experimental::filesystem::current_path(); // g++ 7.5
- std::filesystem::path current_directory = std::filesystem::current_path(); // g++ 9.4
- std::cout << "current directory: " << current_directory << std::endl;
- return 0;
- }
编译脚本build.sh如下:
- #! /bin/bash
-
- #g++ -o test_filesystem test_filesystem.cpp -lstdc++fs # g++ 7.5
- g++ -o test_filesystem test_filesystem.cpp -std=c++17 # g++ 9.4
执行结果如下所示: