在MingW下編譯llvm/clang

[題外話,clang在Windows下玩玩能夠,千萬別用它在正式項目上。一個__declspec(dllexport/dllimport)問題,兩三年了也沒任何進展,可見windows支持多不給力]shell

首先,肯定已經裝好了MingWMsys shell以及Python,而且已經成功checkout llvmclang的代碼。 另外,llvm/clang依賴於zlib,請確認zlib已在MingW下編譯並安裝。windows

關於MingW的版本須要注意的是x86版本的要選擇異常處理模式爲dwarf的版本而不是sjlj模式,不然編譯出來的clang++是不支持異常處理的。由於clang不支持sjlj模式。至於,x64版本MingW就別搞了,由於clang也不支持seh模式。bash

下面是具體編譯的步驟:ui

1. 啓動Msys bash shellspa

2. 在build目錄下運行llvmconfigure腳本,使用 --prefix最好指向mingw安裝目錄。這個目的是爲了編譯好的clang/clang++會自動搜索gcc/g++的頭文件目錄,而不須要再用-I 來include這些路徑。可是,不少時候這招也不靈,由於不少mingw版本的頭文件組織模式和clang設想的不同。能夠本身改clang源文件llvm\tools\clang\lib\Frontend\InitHeaderSearch.cpp適配具體的狀況. 3d

configure的其餘參數可使用 configure --help 來查看具體含義,而後根據須要設定。blog

configure

3. 爲了可以在Msys shell下正常make,須要對一些相關的makefile作一些改動:get

1)修改llvm sourceunittests\Makefile.unittest的第23行it

unittest-before

修改成io

unittest-after

 

2)修改build目錄下生成的Makefile.config

52 - 53

ll_src_root-before

修改成

ll_src_root-after

不然windows版的GNU make就無法解析這兩個路徑,致使相關的makefile include失敗,沒法make

另外,將184

auto-conf-before

修改成

auto-conf-after

不然安裝時會找不到安裝腳本。這個無聊的錯誤不知道是怎麼出現的,暈。

 

3)修改build目錄下的projects\sample\Makefile.common

6, 10, 13, 16行的路徑

sample-before

改成

sample-after

緣由同上,不然makefile include會失敗。

4. 執行完上述步驟, 咱們就能夠在build目錄下make

make

其中 -j後面的數字表示同時啓動幾個make job, 通常不要超過機器的CPU的總核數。

5. 編譯大概須要幾十分鐘不等,去喝杯茶或者乾點別的。編譯完後 make install便可。

相關文章
相關標籤/搜索