WSL:make在使用-j时失败

WSL: make fails when using -j

本文关键字:失败 make WSL      更新时间:2023-10-16

我正在为我的密码学课程做一个项目,我一直在使用Linux的Windows子系统。直到最近,我还能够使用make -j快速构建我的整个项目。

最近,我开始遇到如下编译错误。奇怪的是,我只使用make(没有-j)编译没有问题

因为这以前工作得很好,所以我不认为这个问题与我的makefile中指定的依赖关系有任何关系。(我的大部分代码都在头文件中,因为模板)

In file included from /usr/include/stdlib.h:314:0,
from /usr/include/c++/5/cstdlib:72,
from /usr/include/c++/5/ext/string_conversions.h:41,
from /usr/include/c++/5/bits/basic_string.h:5249,
from /usr/include/c++/5/string:52,
from tests/cryptomath/../../catch.hpp:207,
from tests/cryptomath/test_extgcd.cpp:2:
/usr/include/x86_64-linux-gnu/sys/types.h:219:25: fatal error: /home/ipiano/[student id]/Documents/Code/Homework/512/project/modules/module_crypto/unittests/../libclassiccrypto/affine/headers/sys/select.h: Invalid argument

在我看来,编译器试图在我的项目目录中找到c++源文件(这个特定错误中的sys/select.h),这意味着可能存在路径问题?

我最近唯一能想到的变化是,IT批准了Creator的更新,我安装了它,但我不知道它是否相关。

如果有人看到过这种行为或类似的错误,并且知道如何解决,我们将不胜感激。

---------编辑--------

能够缩小到我的主生成文件所包含的特定生成文件。它定义了部分目标,但不是所有目标。仍然不确定为什么-j标志会让这件事曝光,但至少它现在正在工作

我也遇到了同样的问题:对于N>1,使用"make-jN"时编译失败。经过一些研究,我发现了这里描述的相同问题。

这个问题可能是由WSL的Windows文件系统插件DrvFs中引入的错误引起的,至少在Windows版本16273.1000、16299.19和16299.64(我的)中会发生这种情况。16251版本中不会发生这种情况。

据此,该错误已在Windows Build 16299.98上修复。

由于公司政策的原因,我无法更新我的Windows,也无法执行此解决方案,因此我将文件从/mnt/c移动到/home/<username>,并且编译后没有出现任何问题。