Я пытаюсь создать простое «пустое основное» приложение с помощью компилятора Clang / C2 из средств сборки Visual Studio 2017 (в системе x64). Я начал ...\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvars64.bat
Оболочка, как и предполагалось, но поняла, что не добавляет путь к компилятору clang.exe, поэтому clang
был недоступен Добавлен путь вручную (версия для хоста x64), поэтому clang
может быть вызван тоже.
Попытка построить простейшую из возможных программ с простым пустым телом основной функции приводит к следующей ошибке:
clang hello.cc -o hello.exe
error: failed to load c2 (file not found)
c2.dll — это компоновщик MS, который должен вытащить clang для компоновки, однако, похоже, он не может его найти.
Я пытался собрать ту же программу из самой IDE, и она, очевидно, была успешной, поскольку IDE отдельно вызывает компилятор, а не компоновщик (то есть он не полагается на то, что компилятор вызывает компоновщик, а вместо этого вызывает link.exe напрямую)
Кто-нибудь знает, как привести компилятор clang / c2 в рабочее состояние? (Ранее я мог сделать то же самое с Visual Studio 2015)
Проблема в том, что Clang слишком глуп, чтобы найти link.exe в Windows, несмотря на то, что в PATH
,
Решением является создание символических ссылок на link.exe сразу после clang.exe исполняемый файл, используя MKLINK
команда:
cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX64"mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX64\x64\link.exe"
cd "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\ClangC2\14.10.25903\bin\HostX86"mklink link.exe "c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Tools\MSVC\14.10.25017\bin\HostX86\x86\link.exe"
Вышеупомянутое решение является хакерским, может требовать прав администратора и предполагает, что сшивающие устройства совместимы с нативными.
Других решений пока нет …