Периодические, случайные ошибки «файл не найден» в подсистеме Windows для Linux (WSL) - PullRequest
0 голосов
/ 07 мая 2018

Я получаю прерывистую «фатальную ошибку: ... файл не найден» при сборке приложения C ++ с использованием gcc 4.8 или clang 3.8 под Ubuntu 16.04.2, работающего в подсистеме Windows для Linux (WSL), при включении заголовочных файлов C ++ , но только после установки обновления для Windows 10 апреля (версия 1803, сборка ОС 17134.1) несколько дней назад.

Пример сообщения об ошибке от компилятора clang:

fatal error: 'boost/preprocessor/list/fold_left.hpp' file not found

Пример сообщения об ошибке от компилятора gcc:

fatal error: boost/mpl/aux_/at_impl.hpp: No such file or directory

Я говорю, что ошибка прерывистая, потому что, если я перезапущу сборку, конкретная ошибка, прервавшая сборку, исчезнет, ​​и сборка будет продолжаться какое-то время дольше, пока она либо не будет выполнена успешно, либо случайным образом не сможет включить какой-либо другой файл с ошибка «файл не найден» того же типа.

Время этой ошибки и ее случайность заставляют меня подозревать, что это новая ошибка в WSL. Кто-нибудь еще видел это или есть предложения, как это исправить?

Ошибка не всегда в Boost include, но часто это просто потому, что Boost составляет большую часть всех включаемых файлов. Создаваемые файлы существуют на общем томе в /mnt/d/.

.

Ответы [ 2 ]

0 голосов
/ 08 марта 2019

В моем случае это была не многопоточность, а путь к цепочке инструментов. Неудачный случай был: набор инструментов был установлен в /mnt/c/.../tools/ Хороший случай был: набор инструментов был установлен в /home/yurir/tools/

Полагаю, что отображение папок Windows с папками Ubuntu создает некоторую путаницу.

0 голосов
/ 16 мая 2018

Это было определено как ошибка многопоточности (https://docs.microsoft.com/en-us/windows/wsl/release-notes#build-17655-skip-ahead) и должно быть исправлено в будущем обновлении Windows.

Так как это многопоточная ошибка, возможно, можно обойти ее, не используя многопоточные сборки.

Если вы спешите, возможно, можно просто зайти в инсайдерскую программу Windows и использовать одну из предварительных сборок.

...