Если вы создаете для Windows с Clang и хотите использовать стандартные библиотеки Visual C ++, я предлагаю вам использовать clang-cl
, драйвер, который преобразует параметры командной строки cl Visual C ++ в собственные параметры clang.
Вы сказали, что пишете:
clang -c a.cpp
Опция -c
просит компилятор просто создать и объектный файл и остановить (вместо отправки объектного файла компоновщику). Звучит так, как будто вы хотите, чтобы clang вызвал компоновщик, поэтому вы должны опустить -c
.
Чтобы использовать статическую версию стандартной библиотеки, укажите /MT
(или /MTd
, если вы хотите отладочную версию стандартной библиотеки).
Собрав все это вместе, это должно работать для вас:
clang-cl /MT a.cpp
clang-cl
переведет /MT
в эквивалентные опции для clang, а затем запустит clang. Когда clang завершает компиляцию объектного файла, он автоматически вызывает lld (компоновщик LLVM) с параметрами, совместимыми с параметрами, используемыми для компиляции, что должно привести к созданию рабочего исполняемого файла.
Некоторое время, при использовании clang для компиляции для Windows, вам нужно было использовать Microsoft LINK вместо lld. Но последние версии могут использовать lld и, по сути, будут использовать lld по умолчанию.