- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编译一个使用 std::filesystem 的应用程序。我使用 CMake 作为构建系统,使用 g++-8 作为编译器。
我的 CMakeLists.txt 包括 target_link_libraries(<target_name> PUBLIC stdc++fs)
和 set(CMAKE_CXX_STANDARD 17)
make VERBOSE=1
表明 -lstdc++fs
在链接器命令中使用。
尽管如此,我在使用 std::filesystem 组件的任何地方都得到了 undefined reference 。
它在 Docker 中编译得很好,所以这显然是一个环境问题。
有什么追踪它的技巧吗?
编辑:由于公司规定,我无法发布确切的错误消息,而且它也很长。不过,我会发布一个截断的匿名版本:
CMakeFiles/ProjectName.dir/src/ui/dir_a/file_a.cpp.o: In function `ProjectName::ClassName::update(ProjectName::Body&)':
/home/username/prog/bots/src/ui/dir_a/file_a.cpp:30: undefined reference to `std::filesystem::current_path[abi:cxx11]()'
/home/username/prog/bots/src/ui/dir_a/file_a.cpp:35: undefined reference to `std::filesystem::create_directories(std::filesystem::__cxx11::path const&)'
CMakeFiles/ProjectName.dir/src/ui/dir_a/file_a.cpp.o: In function `std::filesystem::__cxx11::path::operator+=(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
/usr/include/c++/8/bits/fs_path.h:817: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/ProjectName.dir/src/ui/dir_a/file_a.cpp.o: In function `std::filesystem::__cxx11::path::operator+=(char const*)':
/usr/include/c++/8/bits/fs_path.h:825: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
CMakeFiles/ProjectName.dir/src/ui/dir_a/file_a.cpp.o: In function `std::filesystem::exists(std::filesystem::__cxx11::path const&)':
/usr/include/c++/8/bits/fs_ops.h:121: undefined reference to `std::filesystem::status(std::filesystem::__cxx11::path const&)'
CMakeFiles/ProjectName.dir/src/ui/dir_b/file_b.cpp.o: In function `ProjectName::ClassName::update[abi:cxx11]()':
/home/username/prog/bots/src/ui/dir_b/file_b.cpp:30: undefined reference to `std::filesystem::current_path[abi:cxx11]()'
/home/username/prog/bots/src/ui/dir_b/file_b.cpp:34: undefined reference to `std::filesystem::create_directories(std::filesystem::__cxx11::path const&)'
/home/username/prog/bots/src/ui/dir_b/file_b.cpp:36: undefined reference to `std::filesystem::__cxx11::directory_iterator::operator*() const'
/home/username/prog/bots/src/ui/dir_b/file_b.cpp:40: undefined reference to `std::filesystem::__cxx11::path::replace_extension(std::filesystem::__cxx11::path const&)'
/home/username/prog/bots/src/ui/dir_b/file_b.cpp:36: undefined reference to `std::filesystem::__cxx11::directory_iterator::operator++()'
CMakeFiles/ProjectName.dir/src/ui/dir_b/file_b.cpp.o: In function `std::filesystem::__cxx11::path::path(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::filesystem::__cxx11::path::format)':
/usr/include/c++/8/bits/fs_path.h:177: undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()'
这样持续了一百多行。
软件版本:
Ubuntu 18.04
g++-8 (installed with `apt`)
CMake 3.14.2
最佳答案
升级到 g++ 9 解决了这个问题,但是如果有人知道如何解决这个问题并且仍然使用 g++ 8,我会接受这个答案。
关于c++ - 即使使用 -lstdc++fs 也无法链接 std::filesystem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57495609/
调用编译器标志“-lstdc++”会调用哪些标准?与“-lstdc++11”一样,c++11 标准被调用,同样可以被“-std=c++11”调用。 最佳答案 -l 标志不会改变标准一致性,它用于指定要
当我尝试在Linux上打开应用程序时,它崩溃并显示以下行: /usr/bin/ld: cannot find -lstdc++ clang: error: linker command failed
我在我的应用程序中使用openCV2.framework。它可以在模拟器中正常运行,但不能针对iOS设备进行编译。它得到以下错误 ld: library not found for -lstdc++
我试图将编译分解为这四个步骤,但最后一个步骤对我来说似乎有问题。 cpp hello.cpp > hello.i g++ -S hello.i as -o hello.o hello.s ld -o
安answer to this question让我意识到我需要将 -lstdc++ 添加到我的“其他链接器标志”中才能编译我的项目。 如果我将我的代码直接编译到我的项目中,它运行良好。如果我将它构建
有几个关于获取 experimental/filesystem 的问题在最新版本的 GCC 和 Clang 中编译:experimental::filesystem linker error 但是现在
我正在尝试使用其他人的 Makefile 来编译一个非常简单的 C++ 库。生成文件如下: JNIFLAGS=-O2 -pthread -I/usr/lib/jvm/java-6-sun/includ
这是我的错误 make cc msgd.o -o msgd msgd.o: In function `main': /home/cam/Desktop/lab1/msgd.cc:37: und
我正在尝试构建 wxFormBuilder_v3.5.0-beta-source。它带有一个用于创建构建文件的 shell 文件,但它一直卡在以下错误中: ==== Building Premake4
g++和gcc -lstdc++有区别吗? 也就是说,g++就是默认链接了C++标准库的gcc吗? 最佳答案 g++ 是一个编译器,类似于 gcc。然而,g++ 包括解析现代 C++ 构造的能力,而
将 Xcode 版本更新到 10.0 beta 后,开始出现“ld: library not found for -lstdc++.6”错误。相同的代码在 Xcode 9.2 中运行良好 还将 mac
这是在命令行中工作的 c++ filesystem 上的演示 filesystem-testing.cpp: 环境:gcc/5.5.0 #include #include #include in
我正在尝试编译一个使用 std::filesystem 的应用程序。我使用 CMake 作为构建系统,使用 g++-8 作为编译器。 我的 CMakeLists.txt 包括 target_link_
我在 64 位系统上有 32 位库,所以在使用 32 位库编译我的代码时,我通过了 -m32 但这会导致另一个错误提示 /usr/bin/ld: skipping incompatible /usr/
我正在尝试将 Python 库包装在 C++ 库周围,而 distutils 在 OS X 上对我来说失败了。以下是我的 setup.py 中的相关行: if sys.platform.startsw
尝试在 MacOS 上安装 python 依赖项时遇到构建错误。 clang: warning: libstdc++ is deprecated; move to libc++ with a
我正在关注 Matlab编码器kalman教程在 Matlab帮助。使用时 codegen ,出现如下错误: /usr/bin/ld: cannot find -lstdc++ collect2: l
我在尝试使用 Xcode 10 在 iOS 上使用“IBMMobileFirstPlatformFoundation”的 pod 安装运行应用程序时收到错误 ld: library not found
在尝试使用当前的 GCC 在 C++ 中使用一些新的/实验性的东西时,我遇到了链接错误。好像类似question已发布,但仍然出现错误。 有人可以解释一下我在这里做错了什么/哪里错了吗?。希望我已经提
ld: library not found for -lstdc++.6 clang: error: linker command failed with exit code 1 (use -v to
我是一名优秀的程序员,十分优秀!