LLVM是什么

簡(jiǎn)介

LLVM是一個(gè)自由軟件項(xiàng)目,它是一種編譯器基礎(chǔ)設(shè)施,以C++寫成,包含一系列模塊化的編譯器組件和工具鏈,用來(lái)開發(fā)編譯器前端和后端。它是為了任意一種編程語(yǔ)言而寫成的程序,利用虛擬技術(shù)創(chuàng)造出編譯時(shí)期、鏈接時(shí)期、運(yùn)行時(shí)期以及“閑置時(shí)期”的最優(yōu)化。

配置編譯流程

1.配置編譯環(huán)境

1)安裝wget依賴工具。

yum install wget -y

2)升級(jí)GCC版本。

鯤鵬默認(rèn)的GCC版本為4.8.5,編譯llvm時(shí)候,需要不低于GCC5.1的版本。請(qǐng)參考http://m.cqfng.cn/kunpeng/software/gcc.html對(duì)GCC版本進(jìn)行升級(jí)

3)升級(jí)CMake版本。

配置要求CMake最低版本為3.4.3,請(qǐng)參考http://m.cqfng.cn/kunpeng/software/cmake.html對(duì)CMake進(jìn)行安裝或者版本升級(jí)。

----結(jié)束

2.獲取源碼

獲取“l(fā)lvm-9.0.0”源碼包。

cd /usr/local/src
mkdir llvm
cd llvm
wget http://releases.llvm.org/9.0.0/llvm-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/cfe-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/compiler-rt-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/libcxx-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/libcxxabi-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/libunwind-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/lld-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/lldb-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/openmp-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/polly-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/clang-tools-extra-9.0.0.src.tar.xz
wget http://releases.llvm.org/9.0.0/test-suite-9.0.0.src.tar.xz

3.編譯和安裝

1)解壓軟件包。

tar -xvf llvm-9.0.0.src.tar.xz

2)進(jìn)入gcc的安裝目錄。

cd llvm-9.0.0.src
mkdir b
cd b

3)生成Makefile文件

cmake ..  -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON

4)編譯安裝llvm。

“-j”參數(shù)可利用多核CPU加快編譯速度,在本示例中,使用的是2核CPU,所以此處為“-j2”。

可通過(guò)下述命令查詢CPU核數(shù):

cat /proc/cpuinfo| grep "processor"| wc -l
make -j2
make install
----結(jié)束

4.運(yùn)行和驗(yàn)證

1)查詢安裝的llvm工具。

輸入llvm-然后按Tab鍵,回顯信息如下,則表示llvm安裝了如下工具。

llvm-addr2line   llvm-config      llvm-cxxmap      llvm-elfabi      llvm-lipo        llvm-mt          llvm-profdata    llvm-size        llvm-tblgen      
llvm-ar          llvm-cov         llvm-diff        llvm-exegesis    llvm-lto               llvm-ranlib      llvm-split       llvm-undname    
llvm-as          llvm-c-test      llvm-dis         llvm-extract     llvm-lto2        llvm-objcopy     llvm-rc          llvm-stress      llvm-xray        
llvm-bcanalyzer  llvm-cvtres      llvm-dlltool     llvm-jitlink     llvm-mc          llvm-objdump     llvm-readelf     llvm-strings     
llvm-cat         llvm-cxxdump     llvm-dwarfdump   llvm-lib         llvm-mca         llvm-opt-report  llvm-readobj     llvm-strip       
llvm-cfi-verify  llvm-cxxfilt     llvm-dwp         llvm-link        llvm-modextract  llvm-pdbutil     llvm-rtdyld      llvm-symbolizer

2)選擇一個(gè)工具查看版本信息。

回顯信息如下,則表示該工具安裝成功,其他工具驗(yàn)證類似。

LLVM (http://llvm.org/):
  LLVM version 9.0.0
  Optimized build with assertions.
  Default target: aarch64-unknown-linux-gnu
  Host CPU: tsv110
----結(jié)束

?