WSL:使用-j时失败

时间:2017-11-08 00:10:53

标签: c++ linux makefile windows-subsystem-for-linux

我正在为我的加密课程开展一个项目,而且我一直在使用Windows子系统Linux。直到最近,我才能够使用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部门批准了创建者的更新,我安装了它,但我不知道它是否相关。

如果有人看到此行为或此类错误并知道如何解决此问题,我们将不胜感激。

--------- --------- EDIT

能够缩小到我的主要makefile包含的特定makefile。它定义了它的一部分目标,但不是全部。仍然不确定-j旗帜为什么会让这一点曝光,但至少它现在正在工作

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题:使用“make -j N ”时,我的编译失败, N > 1。经过一些研究,我发现同样的问题描述了here

问题可能是由于WSL的Windows文件系统插件DrvFs中引入的一个错误导致的,至少在Windows版本16273.1000,16299.19和16299.64(我的)中发生了这个问题。它不会发生在构建16251中。

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

由于公司政策导致我无法更新我的Windows而我无法执行此workaround,因此我将文件从/mnt/c移至/home/<username>,并且编译后没有其他问题。< / p>