使用 Microsoft Visual Studio 启动 LLVM 系统¶
概述¶
欢迎使用 Windows 上的 LLVM!本文档仅涵盖使用 Visual Studio 的 Windows 上的 LLVM,不包括 WSL、mingw 或 cygwin。为了开始使用,您首先需要了解一些基本信息。
有许多不同的项目组成了 LLVM。第一个部分是 LLVM 套件。它包含使用 LLVM 所需的所有工具、库和头文件。它包含汇编器、反汇编器、位代码分析器和位代码优化器。它还包含可用于测试 LLVM 工具和 Clang 前端的基本回归测试。
第二个部分是 Clang 前端。此组件将 C、C++、Objective C 和 Objective C++ 代码编译为 LLVM 位代码。Clang 通常使用 LLVM 库来优化位代码并发出机器代码。LLVM 完全支持 COFF 对象文件格式,该格式与所有其他现有的 Windows 工具链兼容。
还有更多本文档未讨论的 LLVM 项目。
要求¶
在您开始使用 LLVM 系统之前,请查看下面给出的要求。提前了解您需要的硬件和软件可以为您节省一些麻烦。
硬件¶
任何可以充分运行 Visual Studio 2019 的系统都可以。包括 git 索引在内的 LLVM 源代码树大约占用 3GB。对象文件、库和可执行文件在 Release 模式下大约占用 5GB,在 Debug 模式下占用更多。建议使用 SSD 驱动器和 >16GB RAM。
软件¶
您将需要 Visual Studio 2019 或更高版本,并安装最新的更新。Visual Studio Community Edition 即可。
您还需要 CMake 构建系统,因为它会生成您将用于构建的项目文件。CMake 与 Visual Studio 2019 捆绑在一起,因此无需单独安装。如果您单独安装 CMake,Visual Studio 2022 将需要 CMake 3.21 或更高版本。
如果您想运行 LLVM 测试,您将需要 Python。已知版本 3.8 及更高版本可以工作。您可以从 Microsoft 商店或 Python 网站使用 Visual Studio 2019 安装 Python。我们推荐后者,因为它允许您调整安装选项。
您还需要带有 bash 工具的 Git for Windows。Git for Windows 也与 Visual Studio 2019 捆绑在一起。
入门¶
以下是快速启动并运行 LLVM 的简短说明。这些说明已使用 Visual Studio 2019 和 Python 3.9.6 进行测试
下载并安装 Visual Studio。
在 Visual Studio 安装程序中,在“工作负载”选项卡中,选择 使用 C++ 的桌面开发 工作负载。在“单个组件”选项卡下,选择 Git for Windows。
完成 Visual Studio 安装。
下载并安装最新的 Python 3 发行版。
在第一个安装屏幕中,同时选择 为所有用户安装启动器 和 将 Python 添加到 PATH。这将允许为所有用户安装 psutil 以进行回归测试,并使 Python 可从命令行获得。
在第二个安装屏幕中,(再次)选择 为所有用户安装,如果您想开发 lldb,选择 下载调试二进制文件 会很有用。
完成 Python 安装。
- 以管理员身份运行“VS 2019 的开发者命令提示符”。此命令
提示符为 Visual Studio 和已安装的工具提供正确的路径和环境变量。
在终端窗口中,键入命令
c: cd \
您可以将 llvm 源代码安装在
c:\llvm
以外的其他位置,但不要安装到包含空格的路径中(例如c:\Documents and Settings\...
),否则会失败。
注册 Microsoft Debug Interface Access (DIA) DLL
regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\msdia140.dll" regsvr32 "%VSINSTALLDIR%\DIA SDK\bin\amd64\msdia140.dll"
LLVM PDB 测试和 LLDB 开发需要 DIA 库。
安装 psutil 并获取 LLVM 源代码
pip install psutil git clone https://github.com/llvm/llvm-project.git llvm
您可以从 releases page 下载压缩的源代码发行版,而不是
git clone
。选择最后一个链接:Source code (zip)
并使用 Windows 资源管理器内置的 zip 支持或任何其他解压缩工具解压缩下载的文件。
最后,使用 CMake 配置 LLVM
cmake -S llvm\llvm -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_TARGETS_TO_BUILD=X86 -Thost=x64 exit
LLVM_ENABLE_PROJECTS
指定您要构建的任何其他 LLVM 项目,而LLVM_TARGETS_TO_BUILD
选择编译器目标。如果省略LLVM_TARGETS_TO_BUILD
,则默认情况下会构建所有目标,从而减慢编译速度并占用更多磁盘空间。有关如何配置 LLVM 构建的详细信息,请参阅 LLVM CMake 指南。
cmake
命令行工具与 Visual Studio 捆绑在一起,但其 GUI 没有。您可以安装 CMake 以使用其 GUI 来更改 CMake 变量或修改上述命令行。
安装 CMake 后,最简单的方法是启动 CMake GUI,选择您将 LLVM 解压缩到的目录,默认选项应该都可以。您可能真的想要更改的一个选项,无论如何,可能是
CMAKE_INSTALL_PREFIX
设置,以选择在编译完成后要 INSTALL 到的目录,尽管安装对于使用 LLVM 来说不是强制性的。另一个重要的选项是LLVM_TARGETS_TO_BUILD
,它控制构建中包含的 LLVM 目标架构。CMake 为所有构建类型生成项目文件。要选择特定的构建类型,请使用 VS IDE 中的配置管理器或使用 MSBuild 时使用
/property:Configuration
命令行选项。默认情况下,CMake 生成的 Visual Studio 项目文件使用 32 位工具集。如果您在 64 位版本的 Windows 上进行开发并想使用 64 位工具集,请在生成 Visual Studio 解决方案时传递
-Thost=x64
标志。这需要 CMake 3.8.0 或更高版本。
启动 Visual Studio 并选择配置
在您创建的目录中,项目文件将有一个
llvm.sln
文件,只需双击该文件即可打开 Visual Studio。默认的 Visual Studio 配置是 Debug,它速度很慢,并且会在磁盘上生成大量调试信息。现在,我们建议为 LLVM 项目选择 Release 配置,这将以最快的速度构建,或者选择比 Release 大几倍的 RelWithDebInfo。另一种技术是在 Release 模式下构建所有 LLVM,并且仅针对您实际需要调试的特定库或源文件更改编译器标志,禁用优化并启用调试信息。
在 Visual Studio 中测试 LLVM
您可以通过仅构建“check-all”项目来运行 LLVM 测试。测试结果将显示在 VS 输出窗口中。一旦构建成功,您就验证了一个可工作的 LLVM 开发环境!
您不应看到任何意外的失败,但会看到许多不受支持的测试和预期的失败
114>Testing Time: 1124.66s 114> Skipped : 39 114> Unsupported : 21649 114> Passed : 51615 114> Expectedly Failed: 93 ========== Build: 114 succeeded, 0 failed, 321 up-to-date, 0 skipped ==========``
手动安装的替代方案¶
除了上述步骤,为了简化安装过程,您可以使用 Chocolatey 作为包管理器。在 安装 Chocolatey 后,在管理员 shell 中运行以下命令以安装所需的工具
choco install -y git cmake python3
pip3 install psutil
还有一个 Windows Dockerfile,其中包含整个构建工具链。这可以用于使用与您的主机安装不同的工具链来测试构建,或创建构建服务器。
下一步¶
阅读文档。
认真地,阅读文档。
记住,您已被警告两次要阅读文档。
在命令行测试 LLVM:¶
可以通过将目录更改为 llvm 源代码目录并运行来运行 LLVM 测试
c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test
此示例假定 Python 在您的 PATH 变量中,这将在 Python 安装期间选择 将 Python 添加到 PATH 之后。如果您在 Python 安装之前打开了命令窗口,则必须关闭并重新打开它才能获得更新的 PATH。
可以使用以下命令运行特定的测试或测试目录
c:\llvm> python ..\build\Release\bin\llvm-lit.py llvm\test\Transforms\Util
构建 LLVM 套件:¶
项目仍然可以单独构建,但是要构建所有项目,不要只是在批量构建中选择所有项目(因为有些项目旨在作为配置项目),而是选择并构建
ALL_BUILD
项目以构建所有内容,或INSTALL
项目,它首先构建ALL_BUILD
项目,然后将 LLVM 头文件、库和其他有用的东西安装到您首次配置 CMake 时设置的CMAKE_INSTALL_PREFIX
设置的目录中。Fibonacci 项目是一个使用 JIT 的示例程序。修改项目的调试属性以提供数字命令行参数或从命令行运行它。该程序将打印相应的斐波那契值。
链接¶
本文档只是关于如何使用 LLVM 做一些简单事情的介绍... 您可以做很多更有趣和复杂的事情,但这里没有记录(如果您想写一些东西,我们很乐意接受补丁!)。有关 LLVM 的更多信息,请查看