在windows上用mingw w64編譯配置llvm

lt發表於2017-01-23

以下除了軟體版本不同,全參照http://blog.csdn.net/happywjh666/article/details/51415723內容。

下載軟體:
1.winrar 5.4: http://rarlab.com/rar/wrar540sc.exe
2.llvm原始碼:http://llvm.org/releases/3.8.1/llvm-3.8.1.src.tar.xz 
3.clang原始碼:http://llvm.org/releases/3.8.1/cfe-3.8.1.src.tar.xz
(http://releases.llvm.org/download.html上有其他版本和其他元件原始碼)
4.cmake:https://cmake.org/files/v3.6/cmake-3.6.3-win32-x86.zip
(https://cmake.org/download/上有其他版本)
5.mingw 6.2.0:https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/6.2.0/threads-posix/dwarf/i686-6.2.0-release-posix-dwarf-rt_v5-rev1.7z
(https://sourceforge.net/projects/mingw-w64/files/上有其他版本)
可能還需要安裝python。(https://www.python.org/)

安裝winrar,把所有軟體包都解壓到d:\。
忽略 D:\cfe-3.8.1.src.tar.xz: 無法建立符號連結 D:\cfe-3.8.1.src\test\Driver\Inputs\multilib_32bit_linux_tree\usr\bin\as ..錯誤

在windows開始選單/執行輸入cmd開啟命令列視窗,輸入以下命令:
set path=D:\mingw32\bin;%path%
set lib=D:\mingw32\lib;%lib%
驗證gcc版本
g++ --version
顯示
g++ (i686-posix-dwarf-rev1, Built by MinGW-W64 project) 6.2.0

D:\>set path=%path%;D:\cmake-3.6.3-win32-x86\bin

--編譯和安裝llvm-3.8.1

D:\>cd D:\llvm-3.8.1.src

D:\llvm-3.8.1.src>md build

D:\llvm-3.8.1.src>cd build

D:\llvm-3.8.1.src\build>md \llvmtest

D:\llvm-3.8.1.src\build>cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=D:\LLVMtest ..
...
-- Generating done
-- Build files have been written to: D:/llvm-3.8.1.src/build

D:\llvm-3.8.1.src\build>mingw32-make.exe (這一步在我的筆記本上大概1小時)
...
[100%] Linking CXX executable ..\..\bin\yaml2obj.exe
[100%] Built target yaml2obj

D:\llvm-3.8.1.src\build>mingw32-make install
...
-- Installing: D:/llvmtest/share/llvm/cmake/./LLVMProcessSources.cmake
-- Installing: D:/llvmtest/share/llvm/cmake/./TableGen.cmake

--編譯和安裝clang-3.8.1

D:\>cd D:\cfe-3.8.1.src

D:\cfe-3.8.1.src>md build

D:\cfe-3.8.1.src>cd build

D:\cfe-3.8.1.src\build>cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=D:\LLVMtest ..
...
-- Generating done
-- Build files have been written to: D:/cfe-3.8.1.src/build

D:\cfe-3.8.1.src\build>mingw32-make.exe (這一步在我的筆記本上大概1小時)
...
[100%] Generating ../../share/scan-view/bugcatcher.ico
[100%] Built target scan-view

D:\cfe-3.8.1.src\build>mingw32-make install
...
-- Installing: D:/llvmtest/share/scan-view/GetRadarVersion.scpt
-- Installing: D:/llvmtest/share/scan-view/bugcatcher.ico

D:\>set path=%path%;d:\llvmtest\bin

D:\>set include=%include%;d:\llvmtest\include

D:\>set lib=%lib%;d:\llvmtest\lib

D:\>clang++ -v
clang version 3.8.1 (tags/RELEASE_381/final)
Target: i686-pc-windows-gnu
Thread model: posix
InstalledDir: d:\llvmtest\bin


D:\>clang++ p586_4a.cpp
p586_4a.cpp:63:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
1 warning generated.
編譯成功

最後build的目錄結構
D:\LLVMTEST
├─bin
├─include
│  ├─clang
│  │  ├─Analysis
│  │  │  ├─Analyses
│  │  │  ├─DomainSpecific
│  │  │  ├─FlowSensitive
│  │  │  └─Support
│  │  ├─ARCMigrate
│  │  ├─AST
│  │  ├─ASTMatchers
│  │  │  └─Dynamic
│  │  ├─Basic
│  │  ├─CodeGen
│  │  ├─Config
│  │  ├─Driver
│  │  ├─Edit
│  │  ├─Format
│  │  ├─Frontend
│  │  ├─FrontendTool
│  │  ├─Index
│  │  ├─Lex
│  │  ├─Parse
│  │  ├─Rewrite
│  │  │  ├─Core
│  │  │  └─Frontend
│  │  ├─Sema
│  │  ├─Serialization
│  │  ├─StaticAnalyzer
│  │  │  ├─Checkers
│  │  │  ├─Core
│  │  │  │  ├─BugReporter
│  │  │  │  └─PathSensitive
│  │  │  └─Frontend
│  │  └─Tooling
│  │      └─Core
│  ├─clang-c
│  ├─llvm
│  │  ├─ADT
│  │  ├─Analysis
│  │  ├─AsmParser
│  │  ├─Bitcode
│  │  ├─CodeGen
│  │  │  ├─MIRParser
│  │  │  └─PBQP
│  │  ├─Config
│  │  ├─DebugInfo
│  │  │  ├─CodeView
│  │  │  ├─DWARF
│  │  │  ├─PDB
│  │  │  │  └─DIA
│  │  │  └─Symbolize
│  │  ├─ExecutionEngine
│  │  │  └─Orc
│  │  ├─IR
│  │  ├─IRReader
│  │  ├─LibDriver
│  │  ├─LineEditor
│  │  ├─Linker
│  │  ├─LTO
│  │  ├─MC
│  │  │  ├─MCAnalysis
│  │  │  └─MCParser
│  │  ├─Object
│  │  ├─Option
│  │  ├─Passes
│  │  ├─ProfileData
│  │  ├─Support
│  │  │  └─ELFRelocs
│  │  ├─TableGen
│  │  ├─Target
│  │  └─Transforms
│  │      ├─InstCombine
│  │      ├─IPO
│  │      ├─Scalar
│  │      └─Utils
│  └─llvm-c
│      └─Transforms
├─lib
│  └─clang
│      └─3.8.1
│          └─include
├─libexec
├─msbuild-bin
├─share
│  ├─clang
│  │  └─cmake
│  ├─llvm
│  │  └─cmake
│  ├─man
│  │  └─man1
│  ├─scan-build
│  └─scan-view
└─tools
    └─msbuild
        ├─Win32
        └─x64

相關文章