如何在Windows的MinGW GCC 6.3.0中安装std::filesystem模块
解决MinGW GCC 6.3.0下使用C++ Filesystem的问题
方案一:手动移植libstdc++的experimental filesystem实现
GCC 6.3.0的libstdc++虽未默认携带filesystem模块,但你可以单独提取对应版本的filesystem源码编译使用:
- 找到GCC 6.3.0对应的libstdc++源码包,从中提取
experimental/filesystem相关头文件(如fs_path.h、fs_ops.h等)和实现文件(fs_path.cc、fs_ops.cc、fs_dir.cc等) - 将头文件放到项目头文件目录,实现文件添加到项目编译列表,或单独编译成静态库:
g++ -c -std=c++1z fs_path.cc fs_ops.cc fs_dir.cc -o libfs.a - 代码中继续使用
<experimental/filesystem>,编译项目时链接该静态库:g++ -std=c++1z your_code.cpp libfs.a -o your_program
方案二:使用Boost.Filesystem替代
Boost.Filesystem是成熟的跨平台文件系统库,完美兼容老版本GCC:
- 下载兼容GCC 6.3.0的Boost版本(比如Boost 1.70.0,避免新版本兼容性问题)
- 打开MinGW终端,进入Boost根目录,执行命令编译Filesystem模块:
bootstrap.bat mingw b2 toolset=gcc --with-filesystem - 代码中替换头文件为
<boost/filesystem.hpp>,使用boost::filesystem命名空间 - 编译项目时链接Boost库:
g++ -std=c++1z your_code.cpp -lboost_filesystem -lboost_system -o your_program
注意:GCC 6.3.0对C++17的支持为实验性,编译时用-std=c++1z比-std=c++17更稳妥。
内容的提问来源于stack exchange,提问作者Keshav V.
相关产品推荐
相关产品推荐

