ubuntu 18.10 上的 std::filesystem 链接错误 [重复]

Posted

技术标签:

【中文标题】ubuntu 18.10 上的 std::filesystem 链接错误 [重复]【英文标题】:std::filesystem link error on ubuntu 18.10 [duplicate] 【发布时间】:2018-12-19 13:51:49 【问题描述】:

我正在学习 C++ 文件系统库 (std::filesystem) 的使用。以下代码导致链接器错误。

我该如何解决?

fs.cpp 的代码:

#include <iostream>
#include <filesystem>
#include <algorithm>
#include <iterator>

int main() 
    using namespace std::filesystem;

    directory_iterator iter".";
    for (auto& ent: iter) 
        std::cout << ent.path() << std::endl;
    

错误输出:

/usr/bin/ld: /tmp/cc7vhf9X.o: in function `main':
fs.cpp:(.text+0x10b): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const'
/usr/bin/ld: fs.cpp:(.text+0x151): undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()'
/usr/bin/ld: /tmp/cc7vhf9X.o: in function `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path const&)':
fs.cpp:(.text._ZNSt10filesystem7__cxx1118directory_iteratorC2ERKNS0_4pathE[_ZNSt10filesystem7__cxx1118directory_iteratorC5ERKNS0_4pathE]+0x26): undefined reference to `std::filesystem::__cxx11::directory_iterator::directory_iterator(std::filesystem::__cxx11::path
const&, std::filesystem::directory_options, std::error_code*)'
/usr/bin/ld: /tmp/cc7vhf9X.o: in function `std::filesystem::__cxx11::path::path<char [2], std::filesystem::__cxx11::path>(char const (&) [2], std::filesystem::__cxx11::path::format)':
fs.cpp:(.text._ZNSt10filesystem7__cxx114pathC2IA2_cS1_EERKT_NS1_6formatE[_ZNSt10filesystem7__cxx114pathC5IA2_cS1_EERKT_NS1_6formatE]+0x6d): undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
collect2: error: ld returned 1 exit status

环境:

Ubuntu 18.10 g++ 8.2.0 编译选项:g++ -std=c++17 -o fs fs.cpp

【问题讨论】:

因为这个副本有 libstdc++ 和 libc++ 答案。 GCC 8 仍然需要-lstdc++fs 他们可能需要它直到 C++20。 【参考方案1】:

需要在选项中添加-lstdc++fs

g++ -lstdc++fs -std=c++17 -o fs fs.cpp -lstdc++fs

【讨论】:

以上是关于ubuntu 18.10 上的 std::filesystem 链接错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu18.10搜狗输入法的安装

新的Ubuntu 18.10值得安装吗?

Mongodb Compass 无法在 Ubuntu 18.10 中打开

无法从 Ubuntu 18.10 访问 Redmi Note 5 Pro

ubuntu18.10安装网易云音乐

Ubuntu 18.10 安装PDF阅读器