首页 > 后端开发 > C++ > 为什么在 GCC 6.0 中使用 `std::experimental::filesystem` 时出现链接器错误?

为什么在 GCC 6.0 中使用 `std::experimental::filesystem` 时出现链接器错误?

DDD
发布: 2024-11-17 13:13:02
原创
364 人浏览过

Why am I getting a linker error when using `std::experimental::filesystem` in GCC 6.0?

实验性::文件系统的链接器错误

当尝试在当前开发版本的 gcc 6.0 中使用新颖的 c 1z 功能时,示例程序遇到链接器错误:

#include <iostream>
#include <experimental/filesystem>
namespace fs = std::experimental::filesystem;

int main()
{
    fs::path p1 = "/home/pete/checkit";

    std::cout << "p1 = " << p1 << std::endl;
}
登录后复制

导致以下错误:

/opt/linux-gnu_6-20151011/bin/g++ --std=c++1z main.cpp -O2 -g -o go
/tmp/ccaGzqFO.o: In function \`std::experimental::filesystem::v1::__cxx11::path::path(char const (&) [36])':
/opt/linux-gnu_6-20151011/include/c++/6.0.0/experimental/bits/fs_path.h:167: undefined reference to `std::experimental::filesystem::v1::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status
登录后复制

解决方案

文件系统 TS 不同于C 1z 支持并且不是 C 1z 工作草案的一部分。可以通过使用 -lstdc fs 链接来访问库来解决链接问题。

更新

  • 在 GCC 8.x 中,C 17 文件系统实现也可以在命名空间 std::filesystem 中使用 -std=gnu 17 或 -std=c 17,但需要链接到 -lstdc fs。
  • 在 GCC 9 中,可以使用 C 17 文件系统组件,无需 - lstdc fs。
  • 在 GCC 13.3 中,std::experimental::filesystem 符号也可在 -lstdc exp 中使用。

以上是为什么在 GCC 6.0 中使用 `std::experimental::filesystem` 时出现链接器错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板