当前位置: 首页 > 知识库问答 >
问题:

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

祝俊雄
2023-03-14

我尝试在 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

gcc 版本是快照 Linux-gnu_6-20151011

有什么提示如何链接新的c 1z功能吗?

共有3个答案

凌波峻
2023-03-14

使用clang 4.0,您需要链接到libc实验. a

确保使用libc(而不是libstdc)和-stdlib=libc(如注释中所述)进行构建

欧阳子石
2023-03-14

如果使用cmake,请将以下行添加CMakeLists.txt中:

link_libraries(stdc++fs)

这样cmake就可以链接到相应的库。

曾嘉瑞
2023-03-14

文件系统TS与C 1z支持无关,它是一个完全独立的规范,不是C 1z工作草案的一部分。GCC的实现(在GCC 5.3及更高版本中)甚至可以在C 11模式下使用。

你只需要链接到 -lstdc fs 就可以使用它。

(相关库libstdc-fs.a是一个静态库,对于任何静态库,它都应该位于链接器命令中依赖它的任何对象之后。)

2017年11月更新:除了文件系统TS,GCC 8.x还有一个C 17文件系统库的实现,在< code >中定义

2019年1月更新:从GCC 9开始,C 17std::filesystem组件可以在没有-lstdc-fs的情况下使用(但您仍然需要用于 的库)。

 类似资料:
  • 虽然我对Objective-C开发很熟悉,但当涉及错误解释时,我仍然认为自己有点像n00b。我在申请别人也在做的工作。我相信我们可能有不同版本的Xcode,一个开发者有一台PC(其他人和我有一台MacBook)。我使用的是Xcode 4.5.1。 问题所在 Apple clang版本4.1(Tags/Apple/Clang-421.11.66)(基于LLVM 3.1 SVN)目标:i386-App

  • 本文将从 SPI Flash 和 SD Card 两方面给大家讲解如何使用文件系统,以及针对本次 DIY 做出的一些优化,会大大增强系统性能。 本次任务 了解 RT-Thread 文件系统,在接收节点中使用文件系统,存放来自发送节点发送过来的数据。 上述任务比较单一,只是文件系统而已。不过,能巧妙灵活的把文件系统用好用对,可不是一件轻松的事情。 RT-Thread 文件系统简要介绍 DFS 是 R

  • 1、文件系统层次结构 现代操作系统有多种文件系统类型,因此文件系统的层次结构也不尽相同。 文件系统为用户提供与文件及目录有关的调用,如新建、打开、读写、关闭、删除文件,建立、删除目录等。此层由若干程序模块组成,每一模块对应一条系统调用,用户发出系统调用时,控制即转入相应的模块。 文件目录系统的主要功能是管理文件目录,其任务有管理活跃文件目录表、管理读写状态信息表、管理用户进程的打开文件表、管理与组

  • 文件系统是负责文件管理的操作系统的一部分。 它提供了一种机制来存储数据和访问文件内容,包括数据和程序。一些操作系统将所有内容视为Ubuntu文件。 文件系统处理以下问题 - 文件结构 - 前面已经了解可存储文件的各种数据结构。文件系统的任务是保持最佳的文件结构。 恢复可用空间 - 每当文件从硬盘中删除时,磁盘中都会创建一个可用空间。 可能有很多这样的空间需要被恢复,以便将它们重新分配给其他文件。

  • 简单的文件读写是通过uv_fs_*函数族和与之相关的uv_fs_t结构体完成的。 note libuv 提供的文件操作和 socket operations 并不相同。套接字操作使用了操作系统本身提供了非阻塞操作,而文件操作内部使用了阻塞函数,但是 libuv 是在线程池中调用这些函数,并在应用程序需要交互时通知在事件循环中注册的监视器。 所有的文件操作函数都有两种形式 - 同步(synchron

  • 文件系统提供弹性扩展的高性能文件存储服务,可为公有云上的虚拟机提供共享存储服务。 文件系统提供弹性扩展的高性能文件存储服务,可为公有云上的虚拟机提供共享存储服务。 目前已对接阿里云的NAS文件系统以及华为云的SFS弹性文件服务。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “存储/文件存储/文件系统” 菜单项,进入文件系统页面。 新建文件系统 该功能用于创建文件系统。 在文件系统