Я запускаю WSL1. Я создал файл в своем домашнем каталоге, т.е. home/username
У меня есть .exe-файл с именем armcc.exe в моем каталоге C:\. Я могу запустить что-то вроде этого из оболочки Linux:
/mnt/c/armcc.exe /mnt/c/test/foo.c
Однако если я создам файл в /home/username
, исполняемый файл не сможет получить к нему доступ, т. е. эта команда завершится ошибкой:
/mnt/c/armcc.exe /home/username/foo.c
Я получаю сообщение об ошибке "no source": Error: #5: cannot open source input file
в исполняемом файле компилятора.
Похоже, что файловая система Windows не может получить доступ к стороне Linux. Как мне этого добиться, если это вообще возможно?
решение1
Обычные программы Windows используют подсистему Win32 и, как следствие, не обрабатывают пути Unix, а только пути Windows. Когда вы используете путь к файловой системе Windows, он транслируется в путь Windows.
Есть способы указать пути к файлам в WSL,используя \\wsl$
префикс. Вам, скорее всего, понадобится использовать такой путь для программы Windows, использующей этот синтаксис Windows. Однако не все программы Windows изящно обрабатывают этот синтаксис пути, а некоторые очень хотят стандартный путь с буквой диска, поэтому может оказаться невозможным использовать этот синтаксис со всеми программами.