Как установить llvm windows

Как установить llvm windows

Руководство по сборке и установке LLVM на Windows и Linux. Знакомит с примерами и утилитами в составе LLVM.

Содержание

Ключевые шаги установки:

  • получить или собрать LLVM с библиотеками, заголовками и утилитами
  • запустить утилиту llvm-config
  • полученные флаги добавить в настройки проекта или скрипты сборки
  • изучить Kaleidoscope, llc и другие примеры кода в составе пакета исходных кодов LLVM

Установка бинарных пакетов в Linux

В большинстве дистрибутивов GNU/Linux все библиотеки и утилиты LLVM доступны в предсобранном виде. Более того, на странице apt.llvm.org доступны постоянно обновляемые репозитории для Debian и Ubuntu.

  • Для версии LLVM 5.0 необходимые для разработчика пакеты будут следующими: llvm-5.0 llvm-5.0-dev llvm-5.0-runtime clang-5.0 .
  • Также можно установить пакеты без явного номера версии, получив привязанную к выпуску дистрибутива версию LLVM/Clang.

Установка бинарных пакетов в Windows

Для Windows проект LLVM/Clang предоставляет инсталлятор Clang, найти который можно на странице releases.llvm.org. К сожалению, инсталлятор не предоставляет библиотек и заголовочных файлов LLVM. Для работы с API LLVM, а не с утилитами, потребуется собрать LLVM самостоятельно.

Установить библиотеки LLVM можно с помощью пакетного менеджера NuGet в составе Visual Studio, нужный пакет есть на странице nuget.org/packages/LLVMLibs

Сборка через CMake

  • Загрузить архив исходников можно на странице releases.llvm.org
  • На сайте LLVM есть детальная инструкция по работе с CMake: llvm.org/docs/CMake.html

CMake используется как основная система сборки для LLVM на всех системах.

CMake представляет собой целый пакет программ и утилит. Система сборки реализуется утилитой командной строки — cmake.exe на Windows и cmake на UNIX. CMake не умеет собирать исходный код самостоятельно и генерирует входные файлы для другой системы сборки, такой как GNU Make (на Linux), xcodebuild (на MacOSX) или msbuild (на Windows)

  • для сборки под Windows или MacOSX разработчик генерирует проекты для Visual Studio или XCode соответственно, и затем собирает привычным способом
  • для сборки под Linux разработчик генерирует Makefile и запускает make

Примеры вызова утилиты cmake:

Сборка и установка на Windows

Допустим, вы распаковали исходный код LLVM в каталог llvm-src на Windows с Visual Studio 2017. Тогда можно создать каталоги llvm-build и llvm-install, и из каталога llvm-build вызвать:

  • После откройте LLVM.sln в Visual Studio и соберите либо весь Solution, либо проекты llc и llvm-config.
  • Для установки LLVM в каталог llvm-install соберите мета-проект CMakePredefinedTargets\PACKAGE

Установка после сборки на Linux

Для установки собранного LLVM лучше всего использовать checkinstall, который, в отличии от make install, создаст нормальный Debian-пакет, который затем можно удалить. При запуске checkinstall без параметров утилита сама предложит ввести название пакета, версию, описание и другие атрибуты, а в конце соберёт deb-пакет и установит его.

Чтобы избежать сюрпризов, можно явно указать параметры генерации пакета. Команда, приведённая ниже, создаст и установит пакет llvm-custom:

Утилита llvm-config

Утилита llvm-config хранит жёстко зашитые при сборке параметры собранного дистрибутива LLVM.

При вызове с параметром —includedir утилита выводит путь к заголовочным файлам LLVM, который можно добавить в настройки проекта или скрипты сборки.

При вызове с параметром —libs утилита выводит список доступных для компоновщика библиотек LLVM, оформленный в виде флагов GCC-совместимого компоновщика.

  • Для подключения библиотек к проекту Visual Studio вы можете
    1. скопировать полученный от llvm-config список в текстовый редактор
    2. с помощью Find/Replace заменить формат -lAA -lBB на AA.lib\nBB.lib\n
    3. добавить изменённый список в настройки проекта в раздел “Linker->Input”
  • Не пытайтесь скопировать список из примера выше: на вашей системе он может отличаться

При вызове без параметров утилита выдаёт справку:

Изучаем дистрибутив LLVM

Язык LLVM-IR

LLVM-IR — это промежуточный язык компиляторов, использующих библиотеки LLVM, именно с ним работают ключевые подсистемы LLVM. Язык поддерживает:

  • инструкции, близкие к ассемблерным
  • функции с параметрами и возвращаемым значением и их атрибуты
  • структуры и массивы
  • примитивные типы, например, целые числа от i1 (1-битное) до i64 (64-битное)
  • в присваивании участвуют не переменные, а регистры — считается, что в LLVM бесконечно много регистров
  • имена регистров локальные для функции, обычно генератор кода генерирует имена с помощью возрастающего ряда чисел
  • присваивать регистр может только одна инструкция в пределах функции, для присваивания в цикле потребуется снова прыгнуть на эту инструкцию
Читайте также:  Bearpaw 1200ta драйвер для windows 10

В языке нет ни выражений, ни ООП, поскольку из LLVM-IR без излишних преобразований генерируется машинный код. Оптимизаторы кода в составе LLVM работают именно с LLVM-IR.

Пример Kaleidoscope

В состав дистрибутива LLVM включён пример Kaleidoscope (см. каталоги и проекты Kaleidoscope, Kaleidoscope-Ch2, Kaleidoscope-Ch3 и так далее). Для этих же примеров есть актуальные статьи на английском языке: llvm.org/docs/tutorial.

Пример реализует полноценный компилятор с кодогенерацией через LLVM. Особенности примера:

  • фронтенд компилятора сильно упрощён, лексер и парсер написаны вручную
  • для простоты примера используются глобальные переменные, от которых легко избавиться средствами ООП
  • бекенд компилятора построен на библиотеках LLVM, для генерации и обработки промежуточного кода использует API библиотек LLVM
  • есть поддержка выражений (включая if-выражение, эквивалентное тернарному оператору)
  • есть поддержка инструкции for
  • есть поддержка вызова внешних функций, написанных на языке C
  • показан полный цикл кодогенерации, включая генерацию отладочной информации

Утилита llc

Утилита llc получает на вход LLVM-IR код и создаёт машинный код. Благодаря этому она служит прекрасным примером для создания финальной стадии бекенда: генератора машинного кода.

  • код прост и понятен, и не содержит внутренней логики обработки данных
  • в своём проекте алгоритм можно упростить ещё сильнее, убрав обработку ненужных вашему компилятору опций командной строки
  • исходный код незначительно меняется от версии к версии в связи с изменениями в LLVM API

Компиляция из C/C++ в LLVM-IR

Компилятор clang способен компилировать из C/C++ в текстовое представление LLVM-IR, что позволяет исследовать способы генерации кода из различных высокоуровневых конструкций. По умолчанию clang компилирует без оптимизаций, то есть сгенерированный при обходе AST код не искажается проходами оптимизатора.

Поддержка Clang и LLVM в проектах Visual Studio Clang/LLVM support in Visual Studio projects

В Visual Studio 2019 доступна поддержка Clang для проектов CMake и MSBuild. Clang support for both CMake and MSBuild projects is available in Visual Studio 2019.

Visual Studio 2019 версии 16.2 и более поздних версий с Clang можно использовать для изменения, сборки и отладки проектов Visual Studio на C++ (MSBuild), предназначенных для Windows или Linux. You can use Visual Studio 2019 version 16.2 and later with Clang to edit, build, and debug C++ Visual Studio projects (MSBuild) that target Windows or Linux.

Установка Install

Для лучшей поддержки интегрированной среды разработки в Visual Studio рекомендуется использовать новейшие средства компилятора Clang для Windows. For best IDE support in Visual Studio, we recommend using the latest Clang compiler tools for Windows. Если они еще не установлены, их можно установить, открыв Visual Studio Installer и выбрав Средства C++ Clang для Windows в разделе дополнительных компонентов Разработка классических приложений на C++ . If you don’t already have the tools, you can install them by opening the Visual Studio Installer and choosing C++ Clang tools for Windows under Desktop development with C++ optional components. Если вы предпочитаете использовать существующую установку Clang на компьютере, выберите необязательный компонент Средства сборки C++ Clang-cl для версии 142. You may prefer to use an existing Clang installation on your machine; if so, choose the C++ Clang-cl for v142 build tools. . optional component.

Для стандартной библиотеки Microsoft C++ требуется по крайней мере Clang 8.0.0. The Microsoft C++ Standard Library requires at least Clang 8.0.0.

В позднейших версиях Visual Studio предоставляются более новые версии набора инструментов Clang. Later versions of Visual Studio provide newer versions of the Clang toolset. Пакетная версия Clang обновляется автоматически, чтобы оставаться актуальной с учетом обновлений в реализации стандартной библиотеки Майкрософт. The bundled version of Clang gets updated automatically to stay current with updates in the Microsoft implementation of the Standard Library. Например, Visual Studio 2019 версии 16.9 включает Clang версии 11. For example, Visual Studio 2019 version 16.9 includes Clang v11.

Настройка проекта Windows для использования средств Clang Configure a Windows project to use Clang tools

Чтобы настроить использование Clang в проекте Visual Studio, в обозревателе решений щелкните узел проекта правой кнопкой мыши и выберите пункт Свойства. To configure a Visual Studio project to use Clang, right-click on the project node in Solution Explorer and choose Properties. Как правило, сначала следует выбрать элемент Все конфигурации в верхней части диалогового окна. Typically, you should first choose All configurations at the top of the dialog. Затем в разделе Общие > Набор инструментов платформы выберите LLVM (clang-cl) и нажмите кнопку ОК. Then, under General > Platform Toolset, choose LLVM (clang-cl) and then OK.

Читайте также:  Активация windows 10 pro x86

«Общие» и выделенными пунктами «Набор средств платформы» и «LLVM (clang-cl)».» data-linktype=»relative-path»>

Если вы используете средства Clang, входящие в состав Visual Studio, никаких дополнительных действий не требуется. If you’re using the Clang tools that are bundled with Visual Studio, no extra steps are required. Для проектов Windows программа Visual Studio по умолчанию вызывает Clang в режиме clang-cl. For Windows projects, Visual Studio by default invokes Clang in clang-cl mode. Он связывается с реализацией стандартной библиотеки Майкрософт. It links with the Microsoft implementation of the Standard Library. По умолчанию clang-cl.exe находится в каталогах %VCINSTALLDIR%\Tools\Llvm\bin\ и %VCINSTALLDIR%\Tools\Llvm\x64\bin\ . By default, clang-cl.exe is located in %VCINSTALLDIR%\Tools\Llvm\bin\ and %VCINSTALLDIR%\Tools\Llvm\x64\bin\.

Если используется настраиваемая установка Clang, можно изменить свойство Проект > Свойства > Каталоги VC++ > Свойства конфигурации > Каталоги исполняемых файлов, добавив корневой каталог настраиваемой установки Clang в качестве первого каталога, или изменить значение свойства LLVMInstallDir . If you’re using a custom Clang installation, you can either modify Project > Properties > VC++ DIrectories > Configuration Properties > Executable Directories by adding the custom Clang installation root as the first directory there, or change the value of the LLVMInstallDir property. Дополнительные сведения см. в разделе Задание настраиваемого расположения LLVM. For more information, see Set a custom LLVM location.

Настройка проекта Linux для использования средств Clang Configure a Linux project to use Clang tools

Для проектов Linux среда Visual Studio использует интерфейс, совместимый с Clang GCC. For Linux projects, Visual Studio uses the Clang GCC-compatible frontend. Свойства проекта и почти все флаги компилятора идентичны. The project properties and nearly all compiler flags are identical

Чтобы настроить использование Clang в проекте Visual Studio для Linux, выполните указанные ниже действия. To configure a Visual Studio Linux project to use Clang:

  1. Щелкните правой кнопкой мыши узел проекта в обозревателе решений и выберите пункт Свойства. Right-click on the project node in Solution Explorer and choose Properties.
  2. Как правило, сначала следует выбрать элемент Все конфигурации в верхней части диалогового окна. Typically, you should first choose All configurations at the top of the dialog.
  3. В разделе Общие >Набор инструментов платформы выберите WSL_Clang_1_0, если вы используете подсистему Windows для Linux (WSL). Under General >Platform Toolset, choose WSL_Clang_1_0 if you’re using Windows Subsystem for Linux (WSL). Выберите Remote_Clang_1_0, если вы используете удаленный компьютер или виртуальную машину. Choose Remote_Clang_1_0 if you’re using a remote machine or VM.
  4. Нажмите кнопку ОК. Press OK.

«Общие» и выделенными пунктами «Набор средств платформы» и «LLVM (clang-cl)».» data-linktype=»relative-path»>

В Linux среда Visual Studio по умолчанию использует первое расположение Clang, которое встречается в свойстве среды PATH. On Linux, Visual Studio by default uses the first Clang location that it finds in the PATH environment property. Если используется настраиваемая установка Clang, измените значение свойства LLVMInstallDir или подставьте путь в свойстве Проект > Свойства > Свойства конфигурации > Каталоги VC++ > Каталоги исполняемых файлов. If you’re using a custom Clang installation, then either change the value of the LLVMInstallDir property or else enter the path under Project > Properties > Configuration Properties > VC++ DIrectories > Executable Directories. Дополнительные сведения см. в разделе Задание настраиваемого расположения LLVM. For more information, see Set a custom LLVM location.

Задание настраиваемого расположения LLVM Set a custom LLVM location

Можно задать настраиваемый путь к LLVM для одного или нескольких проектов, создав файл Directory.build.props. You can set a custom path to LLVM for one or more projects by creating a Directory.build.props file. Затем добавьте этот файл в корневую папку любого проекта. Then, add that file to the root folder of any project. Его можно добавить в корневую папку решения, чтобы применить его ко всем проектам в решении. You can add it to the root solution folder to apply it to all projects in the solution. Файл должен выглядеть следующим образом (только с фактическим путем LLVM): The file should look like this (but use your actual LLVM path):

Это свойство можно объединить с пользовательской версией набора инструментов LLVM. You can combine this property with a custom LLVM toolset version. Дополнительные сведения см. в разделе Установка пользовательской версии набора инструментов LLVM. For more information, see Set a custom LLVM toolset version.

Читайте также:  Screen time для windows

Задание пользовательской версии набора инструментов LLVM Set a custom LLVM toolset version

Начиная с Visual Studio 2019 версии 16.9, можно задать пользовательскую версию набора инструментов для LLVM. Starting in Visual Studio 2019 version 16.9, you can set a custom toolset version for LLVM. Чтобы задать это свойство в проекте в Visual Studio, выполните следующие действия: To set this property in a project in Visual Studio:

Откройте диалоговое окно Страницы свойств проекта. Open the project’s Property Pages dialog box. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio. For details, see Set C++ compiler and build properties in Visual Studio.

Перейдите на страницу свойств Свойства конфигурации > Общие. Select the Configuration Properties > General property page.

Измените значение свойства Набор инструментов платформы на LLVM (clang-cl) , если оно еще не задано. Modify the Platform Toolset property to LLVM (clang-cl), if it isn’t already set.

Перейдите на страницу свойств Свойства конфигурации > Расширенные. Select the Configuration Properties > Advanced property page.

Измените свойство Версия инструментов LLVM на предпочитаемую версию, а затем нажмите кнопку ОК, чтобы сохранить изменения. Modify the LLVM Toolset Version property to your preferred version, and then choose OK to save your changes.

Свойство Версия набора инструментов LLVM отображается только при выборе набора инструментов платформы LLVM. The LLVM Toolset Version property only appears when the LLVM platform toolset is selected.

Версию набора инструментов можно задать для одного или нескольких проектов, создав файл Directory.build.props. You can set the toolset version for one or more projects by creating a Directory.build.props file. Затем добавьте этот файл в корневую папку любого проекта. Then, add that file to the root folder of any project. Добавьте его в корневую папку решения, чтобы применить его ко всем проектам в решении. Add it to the root solution folder to apply it to all projects in the solution. Файл должен выглядеть следующим образом (только с фактическим путем LLVM): The file should look like this (but use your actual LLVM path):

Это свойство также можно объединить с пользовательским расположением LLVM. You can also combine this property with a custom LLVM location. Например, файл Directory.build.props может выглядеть следующим образом: For example, your Directory.build.props file could look like:

При добавлении файла Directory.build.props параметры отображаются по умолчанию в диалоговом окне страницы свойств проекта. When you add a Directory.build.props file, the settings appear as the default in the project Property Pages dialog. Однако при изменении этих свойств в Visual Studio они переопределяют параметры в файле Directory.build.props. However, changes to these properties in Visual Studio override the settings in the Directory.build.props file.

Настройка дополнительных свойств, изменение, сборка и отладка Set additional properties, edit, build, and debug

После настройки конфигурации Clang снова щелкните правой кнопкой мыши узел проекта и выберите пункт Перезагрузить проект. After you have set up a Clang configuration, right-click again on the project node and choose Reload project. Теперь можно выполнять сборку и отладку проекта с помощью средств Clang. You can now build and debug the project using the Clang tools. Visual Studio обнаруживает, что используется компилятор Clang, и предоставляет IntelliSense, выделение, навигацию и другие функции редактирования. Visual Studio detects that you’re using the Clang compiler and provides IntelliSense, highlighting, navigation, and other editing features. Ошибки и предупреждения отображаются в окне вывода. Errors and warnings are displayed in the Output Window. Страницы свойств проекта для конфигурации Clang похожи на параметры для MSVC. The project property pages for a Clang configuration are similar to the ones for MSVC. Однако некоторые зависящие от компилятора функции, такие как «Изменить и продолжить», недоступны для конфигураций Clang. However, some compiler-dependent features such as Edit and Continue aren’t available for Clang configurations. Можно задать компилятор Clang или параметр компоновщика, который недоступен на страницах свойств. You can set a Clang compiler or linker option that isn’t available in the property pages. Добавьте его вручную на страницах свойств в разделе Свойства конфигурации > C/ C++ (или «Компоновщик») > Командная строка > Дополнительные параметры. Add it manually in the property pages under Configuration Properties > C/C++ (or Linker) > Command Line > Additional Options.

При отладке можно использовать точки останова, память и визуализацию данных, а также большинство других функций отладки. When debugging, you can use breakpoints, memory and data visualization, and most other debugging features.

Оцените статью