为-lstdc++fs制作错误库未找到

问题描述 投票:0回答:2

在编译课本上的代码示例时,遇到编译错误:

ld: library not found for -lstdc++fs
。这个错误是什么意思以及如何解决它?

% make filesystem           
Consolidate compiler generated dependencies of target filesystem
[100%] Linking CXX executable filesystem
ld: library not found for -lstdc++fs
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [chapter_17/filesystem] Error 1
make[2]: *** [chapter_17/CMakeFiles/filesystem.dir/all] Error 2
make[1]: *** [chapter_17/CMakeFiles/filesystem.dir/rule] Error 2
make: *** [filesystem] Error 2
c++ macos cmake
2个回答
3
投票

简而言之,不再需要链接

stdc++fs
,因为它已合并到基础库中。

当教科书第一次编写时,C++ 库还没有正式支持文件系统,因此它们需要一个名为

stdc++fs
的辅助库。这是一个
libstdc++
特定库,导入了官方库中尚未包含的 C++17 功能。

现在,GCC 的

libstdc++
和 Clang 的
libc++
都将其包含在其基础库中,并且
stdc++fs
库已被删除。

您可以毫无问题地删除对该库的链接;它修复了编译器支持中不再相关的问题


0
投票

我将 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -lstdc++") 和 target_link_libraries(stdc++) 与 cmake 一起使用。

© www.soinside.com 2019 - 2024. All rights reserved.