在Ubuntu 18.04上支持C++17的std::filesystem的方法

在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++,依次执行如下命令:

bash 复制代码
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如下:

cpp 复制代码
#include <iostream>
//#include <experimental/filesystem> // g++ 7.5
#include <filesystem> // 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如下:

bash 复制代码
#! /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

执行结果如下所示:

相关推荐
PleaSure乐事3 个月前
【Node.js】内置模块FileSystem的保姆级入门讲解
javascript·node.js·es6·filesystem
tekin7 个月前
go语言内置预编译 //go:embed xxx 使用详解
开发语言·后端·golang·预编译·filesystem·fs·embed
大隐隐于野1 年前
百度沧海文件存储CFS推出新一代Namespace架构
filesystem·cfs
fengbingchun1 年前
C++17中std::filesystem::directory_entry的使用
filesystem
恋喵大鲤鱼1 年前
C++ 创建文件并写入内容
c++·filesystem