c++ - Windows Subsystem for Linux (WSL) 下的间歇性随机 'file not found' 错误

标签 c++ gcc boost clang windows-subsystem-for-linux

当包含 C++ 头文件时,在 Windows 子系统 (WSL) 中运行的 Ubuntu 16.04.2 下使用 gcc 4.8 或 clang 3.8 构建 C++ 应用程序时出现间歇性“ fatal error :...文件未找到”错误,但仅在几天前安装了 Windows 10 April 更新(版本 1803,OS Build 17134.1)之后。

来自 clang 编译器的示例错误消息:

fatal error :找不到'boost/preprocessor/list/fold_left.hpp'文件

来自 gcc 编译器的示例错误消息:

fatal error :boost/mpl/aux_/at_impl.hpp:没有这样的文件或目录

我说错误是间歇性的,因为如果我重新运行构建,中断构建的特定错误就会消失,并且构建会运行一段时间,直到它成功构建或随机无法包含其他文件相同类型的“找不到文件”错误。

这个错误的时间和它的随机性让我怀疑这是 WSL 中的一个新错误。其他人看到此问题或对如何解决此问题有建议?

错误并不总是出现在 Boost 包含中,而通常仅仅是因为 Boost 包含整个包含文件的很大一部分。正在构建的文件存在于/mnt/d/下的共享卷上。

最佳答案

这已被确定为一个多线程错误 (https://learn.microsoft.com/en-us/windows/wsl/release-notes#build-17655-skip-ahead),应该会在未来的 Windows 更新中得到修复。

由于这是一个多线程错误,因此可以通过不使用多线程构建来解决它。

如果赶时间,可以直接进入 Windows Insider 程序并使用其中一个预览版本。

关于c++ - Windows Subsystem for Linux (WSL) 下的间歇性随机 'file not found' 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206890/

相关文章:

c++ - 无法定义 multi_index_container ordered_non_unique

c++ - 什么是 move 语义?

c++ - 我用 C++ 编写了一个 findClosestPrime(),但 Xcode 提示 "Control may reach end of non-void function"

c++ - (2 个问题) 'class' 类型重定义(即使使用#pragma once),以及静态函数内部的静态成员对象初始化?

c++ - Google C++ 风格指南中提到的对象所有者是什么?

visual-studio-2012 - 在Windows中将Boost与CMake和Visual Studio链接的正确方法是什么?

c++ - 在 C++ 中创建成员函数名称并在运行时调用它

c - gcc 的示例 makefile

c++ - 如何在没有 operator=() 的情况下为 const 成员 push_back?

c - 如何指示 gcc 像 g++ 那样警告我有关无效函数指针转换的信息?