在Windows下面進行LLVM與CLANG的安裝

转载地址:http://www.dev.idv.tw/mediawiki/index.php/%E5%9C%A8Windows%E4%B8%8B%E9%9D%A2%E9%80%B2%E8%A1%8CLLVM%E8%88%87CLANG%E7%9A%84%E5%AE%89%E8%A3%9D

在Windows下面進行LLVM與CLANG的安裝

需要環境

本文假設你已經有下面的工具安裝在系統中,並且可以正確的使用。

  • SVN client (這是為了抓最新的llvm與clang的source code)
  • cmake
  • mingw32

用SVN下載source code

假設我們要將所有的LLVM與Clang程式碼放到c:\llvm_src,並且要將最後的llvm放到c:\llvm的目錄下。要注意,clang必須放在llvm source code目錄下的tools\clang目錄,否則會編不出來。

> cd /d c:\
> svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm_src
> cd llvm_src\tools
> svn co http://llvm.org/svn/llvm-project/cfe/trunk clang

編譯llvm及clang

接著要進行編譯的動作:

> cd /d c:\llvm_src
> mkdir build
> cd build
> cmake.exe -DCLANG_BUILD_EXAMPLES=ON -DCMAKE_INSTALL_PREFIX=/llvm -G "MinGW Makefiles" .. 
> mingw32-make ENABLE_OPTIMIZED=1

安裝

同樣在c:\llvm_src\build的目錄下輸入下面的指令來安裝:

> mingw32-make install

成功的話,就會發現在c:\llvm目錄下面至少有以下的目錄。基本上就代表llvm及clang已經成功安裝了。

bin
docs
examples
include
lib
share

把c:\llvm\bin放到path的環境變數中,就可以進行編譯了。為了方便,我做了一個批次檔,並且將相關編譯的工具環境當放入path中。

REM llvm-env.bat
set QTDIR=C:\Qt\SDK_1.1\Desktop\Qt\4.7.3\mingw
set PATH=C:\Qt\SDK_1.1\mingw\bin;%QTDIR%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
set PATH=d:\llvm\bin;C:\Tools;C:\Program Files (x86)\CMake 2.8\bin;%PATH%

並且透過捷徑的方式執行它,以得到命令視窗。

  • C:\Windows\System32\cmd.exe /A /Q /K c:\llvm\bin\llvm-env.bat

驗證與練習

我們來準備一個簡單的小程式來練習並且確認llvm與clang已經成功安裝了

#include <stdio.h>

int main(int argc, char ** argv)
{
	printf("Hello World!\n");
}

在剛剛準備好的命令視窗內輸入clang的編譯命令:

> clang -o myhello.exe hello.c -lmsvcrt -Ic:\qt\sdk_1.1\mingw\include -Lc:\qt\sdk_1.1\mingw\lib

因為我是直接使用Qt的mingw環境進行編譯,所以就拿了Qt下面的include目錄與lib目錄來用。如果你是另外自己裝mingw,記得修改這些目錄以符合你的環境。

成功的話,會看到myhello.exe產出。執行它會在視窗內印出"Hello World!"的字樣。

接著,我們來試試llvm相關的功能。首先,我們用clang來產出llvm的bitcode。

> clang -emit-llvm -o hello.bc -c hello.c -Ic:\qt\sdk_1.1\mingw\include

應該可以看到hello.bc這個bitcode檔案出現。讓我們透過lli用llvm的環境來執行它!

> lli hello.bc

然後,我們透過llvm-dis來反組譯它。

> llvm-dis hello.bc -o hello.ll

可以看到hello.ll的內容如下。

; ModuleID = 'hello.bc'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f80:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S32"
target triple = "i686-pc-mingw32"

@.str = private unnamed_addr constant [14 x i8] c"Hello World!\0A\00", align 1

define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
  %retval = alloca i32, align 4
  %argc.addr = alloca i32, align 4
  %argv.addr = alloca i8**, align 4
  store i32 0, i32* %retval
  store i32 %argc, i32* %argc.addr, align 4
  store i8** %argv, i8*** %argv.addr, align 4
  %call = call i32 (i8*, ...)* @printf(i8* getelementptr inbounds ([14 x i8]* @.str, i32 0, i32 0)) nounwind
  %0 = load i32* %retval
  ret i32 %0
}

declare i32 @printf(i8*, ...) nounwind

到此為止,你成功的建立了一個確定可以工作的llvm與clang的環境囉!

參考資料:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以从LLVM官方网站下载LLVMWindows版本。下载网址是http://releases.llvm.org/download.html。您可以选择适合您的操作系统的版本进行下载,比如LLVM 9.0.0的Windows (64-bit)版本。下载完成后,您可以运行setup.exe进行安装。建议您将安装路径选择在没有空格的地方,比如直接安装在C盘下。如果您只需要使用clang工具而不需要libclang库,可以跳过Step3。如果您需要使用libclang,可以按照引用\[2\]中的指引,在cmd中转到build文件夹下,执行cmake命令来配置LLVM。在配置时,您可以根据您的需求选择合适的参数。在安装LLVM时,您可以根据引用\[3\]中的指引,选择需要的组件进行安装。如果只是为了使用LLVM,只需勾选“使用C++的桌面开发”这一项和右侧“可选”里勾选的选项即可。如果需要使用libclang,还需要安装VS的命令行工具。 #### 引用[.reference_title] - *1* *3* [windowsLLVMclang, libclang)的安装和配置](https://blog.csdn.net/weixin_46570816/article/details/104998166)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [win10下安装llvmclang](https://blog.csdn.net/wgx571859177/article/details/80376134)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值