使用 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 和更新版本可以運作。您可以通過 Visual Studio 2019、Microsoft Store 或 Python 網站安裝 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
您可以從 發行頁面下載壓縮的原始碼發行版,而不是使用
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 CMake 指南,以獲取有關如何配置 LLVM 建置的詳細資訊。
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 的更多資訊,請查看