使用優點
對于普通的開發人員來說,LLVM計劃提供了越來越多的可以使用、編譯器以外的其他工具。例如代碼靜态檢查工具 LLVM/Clang Static Analyzer,是一個 Clang 的子項目,能夠使用同樣的 Makefile 生成 HTML 格式的分析報告;而對關注編譯技術的開發人員來說,LLVM提供了很多優點:現代化的設計:LLVM的設計是高度模塊化的,使得其代碼更為清晰和便于排查問題所在。
語言無關的中間代碼:這使得透過LLVM能夠将不同的語言相互連結起來;另一方面,這也使得LLVM能夠緊密地與IDE交互和集成。另一方面,發布中間代碼而非目标代碼能夠在目标系統上更好地發揮其潛能而又不傷害可調試性(i.e. 在目标系統上針對本機的硬件環境産生目标代碼,但又能夠直接通過中間代碼來進行行級調試)作為工具和函數庫:使用LLVM提供的工具可以比較容易地實現新的編程語言的優化編譯器或VM,或為現有的編程語言引入一些更好的優化/調試特性。
先來說說LLVM的曆史。2000年LLVM開始開發,2005年Apple雇了Chris Lattner,LLVM也相當于成了Apple的官方支持的編譯器。Apple已經将它用在OpenCL的流水線優化,Xcode已經能使用llvm-gcc編譯代碼。可以說05年之前LLVM一直都是學術界的東西,05年之後用于工業界.而這篇文章寫在04年.本博最近聽過一個關于LLVM的讨論會,會中有資深人士提到LLVM現在越來越像一個普通的編譯器。說這番話的意思是,我們可以從這篇文章裡找到LLVM的架構設計和早期的一些實現思想,但請不要迷信LLVM現在有多麼神奇,每個架構都會有它的優缺點。
LLVM 是 Illinois 大學發起的一個開源項目,它到底是什麼呢?從字面上看,它是一個虛機系統,然而這又和之前為大家所熟知的 JVM 以及 .net Runtime 這樣的虛機不同,它提供了一套中立的中間代碼和編譯基礎設施,并圍繞這些設施提供了一套全新的編譯策略(使得優化能夠在編譯、連接、運行環境執行過程中,以及安裝之後以有效的方式進行)和其他一些非常有意思的功能。
為什麼這個項目很重要呢?對于普通的開發人員來說,LLVM計劃提供了越來越多的可以使用、編譯器以外的其他工具。例如代碼靜态檢查工具 LLVM/Clang Static Analyzer,是一個 Clang 的子項目,能夠使用同樣的 Makefile 生成 HTML 格式的分析報告;而對關注編譯技術的開發人員來說,LLVM提供了很多優點:
現代化的設計:LLVM的設計是高度模塊化的,使得其代碼更為清晰和便于排查問題所在。 語言無關的中間代碼:這使得透過LLVM能夠将不同的語言相互連結起來;另一方面,這也使得LLVM能夠緊密地與IDE交互和集成。另一方面,發布中間代碼而非目标代碼能夠在目标系統上更好地發揮其潛能而又不傷害可調試性(i.e. 在目标系統上針對本機的硬件環境産生目标代碼,但又能夠直接通過中間代碼來進行行級調試) 作為工具和函數庫:使用LLVM提供的工具可以比較容易地實現新的編程語言的優化編譯器或VM,或為現有的編程語言引入一些更好的優化/調試特性。
如何使用
Windows
在Windows上可以使用Mingw編譯LLVM,
也可以用VisualStudio 編譯
Linux
GCC編譯或者是以LLVM/Clang編譯
MacOSX
XCode自帶
軟件簡介
LLVM 是 Low Level Virtual Machine (低級虛拟機)的簡稱,這個庫提供了與編譯器相關的支持,可以作為多種語言編譯器的後台來使用。能夠進行程序語言的編譯期優化、鍊接優化、在線編譯優化、代碼生成。LLVM的項目是一個模塊化和可重複使用的編譯器和工具技術的集合。LLVM是伊利諾伊大學的一個研究項目,提供一個現代化的,基于SSA的編譯策略能夠同時支持靜态和動态的任意編程語言的編譯目标。自那時以來,已經成長為LLVM的主幹項目,由不同的子項目組成,其中許多正在生産中使用的各種商業和開源的項目,以及被廣泛用于學術研究。
LLVM 是 Illinois 大學發起的一個開源項目,和之前為大家所熟知的JVM 以及 .net Runtime這樣的虛拟機不同,這個虛拟系統提供了一套中立的中間代碼和編譯基礎設施,并圍繞這些設施提供了一套全新的編譯策略(使得優化能夠在編譯、連接、運行環境執行過程中,以及安裝之後以有效的方式進行)和其他一些非常有意思的功能。nn對于普通的開發人員來說,LLVM計劃提供了越來越多的可以使用、編譯器以外的其他工具。例如代碼靜态檢查工具 LLVM/Clang Static Analyzer,是一個 Clang 的子項目,能夠使用同樣的 Makefile 生成 HTML 格式的分析報告



















