llvm clang的安裝(使用cmake)

2021-07-03 23:48:48 字數 2000 閱讀 9324

首先先安裝svn,用來checkout llvm的碼源

aptitude install subversion
然後checkout llvm的碼源:

checkout的是llvm專案的主要**

cd where

-you

-want

-llvm

-to-live

svn co llvm

clang是llvm專案的 c, c++, objective c and objective c++ 前端

cd llvm/tools

svn co clang

cd ../..

compiler-rt主要是為clang和llvm提供執行時庫的支援

cd llvm/projects

svn co compiler-rt

cd ../..

cd where

-you

-want

-llvm

-to-live

cd llvm/projects

svn co test-suit

llvm支援cmake和autotools進行編譯。不同編譯方式對後續建立自定義的pass的方式就不同,例如如果使用cmake編譯,寫pass的時候就不需要建立makefile檔案,而需要建立cmakelist.txt檔案。

在編譯之前,需要參看對系統的要求:

./configure

make

make install

llvm為了防止編譯的中間結果分布在碼源目錄中,影響碼源的結構。因此不支援目錄內編譯。需要在碼源目錄外建立額外的編譯目錄。

mkdir build

cd build

cmake -g "unix makefiles" ../llvm

make

make install

這樣llvm就安裝完成了。下面是llvm的常用工具簡短介紹:

clang: c語言編譯器,類似於gcc

clang++: c++編譯器,類似於g++。clang++只是clang的乙個別名。

clang-format:按照固定的規範格式化c/c++**,非常智慧型。文件請見:

clang-modernize:把按照c++98標準寫的**,轉成c++11標準的。文件請見:

llvm-as:llvm 彙編器

llvm-dis: llvm 反彙編器

opt:llvm 優化器

llc:llvm 靜態編譯器

lli:llvm的位元組碼執行器(某些平台下支援jit)

llvm-link:llvm的位元組碼鏈結器

llvm-ar:llvm的靜態庫打包器,類似unix的ar。

llvm-nm:類似於unix的nm

llvm-ranlib:為 llvm-ar 打包的檔案建立索引

llvm-prof:將 『llvmprof.out』 raw 資料格式化**類可讀的報告

llvm-ld :帶有可裝載的執行時優化支援的通用目標聯結器

llvm-config:列印出配置時 llvm 編譯選項、庫、等等

llvmc:乙個通用的可定製的編譯器驅動

llvm-diff:比較兩個模組的結構

bugpoint:自動案例測試減速器

llvm-extract:從 llvm 位元組**檔案中解壓出乙個函式

llvm-bcanalyzer:位元組**分析器 (分析二進位制編碼本身,而不是它代表的程式)

filecheck:靈活的檔案驗證器,廣泛的被測試工具利用

tblgen:目標描述閱讀器和生成器

lit:llvm 整合測試器,用於執行測試

[1]:

[2]:

[3]:

[4]:

llvm clang安裝 官方文件

首先公升級gcc到4.7及其以上,可以看我的另一篇博文gcc公升級 參考 我採用從svn來安裝。沒有svn的用apt get就可以安裝。下面是根據官方文件寫的 1.llvm mkdir llvm build cd llvm build svnco llvm 2.clang cd llvm tools...

Ubuntu編譯安裝llvm clang

llvm llvm tools clang llvm projects compiler rt wget mv llvm 3.6.0.src llvm cd llvm tools wget tar xf cfe 3.6.0.src.tar.xz mv cfe 3.6.0.src clang cd l...

LLVM Clang編譯器安裝和使用

llvm不僅僅是乙個編譯器,同時提供了模組化的功能和庫,用於編譯器的開發和功能擴充套件。常規的乙個編譯器分為前端 優化器和後端,llvm編譯器也不例外,clang就是屬於乙個編譯器的前端部分,llvm屬於優化器和後端,當然llvm也可以支援其他型別的前端,比如gcc前端編譯器。本文介紹到的llvm ...