在MingW下編譯llvm/clang


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

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

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

下面是具體編譯的步驟:

1. 啟動Msys bash shell

2. 在build目錄下運行llvmconfigure腳本,使用 --prefix最好指向mingw安裝目錄。這個目的是為了編譯好的clang/clang++會自動搜索gcc/g++的頭文件目錄,而不需要再用-I 來include這些路徑。但是,很多時候這招也不靈,因為很多mingw版本的頭文件組織模式和clang設想的不一樣。可以自己改clang源文件llvm\tools\clang\lib\Frontend\InitHeaderSearch.cpp適配具體的情況.

configure的其他參數可以使用 configure --help 來查看具體含義,然后根據需要設定。

configure

3. 為了能夠在Msys shell下正常make,需要對一些相關的makefile做一些改動:

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

unittest-before

修改為

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即可。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM