一 簡介
最近的一些活動需要接觸clang來實現對程序的分析,特地來了解下clang的工作原理以及相應的數據生成。
本文在虛擬機上進行安裝,物理機:win7,虛擬機:ubuntu 18.04(VBox,採用的中科大的源)
參考博客:安裝LLVM+Clang教程
二 開始
1 sudo apt-get install subversion
#LLVM官方是用svn進行版本控制的,因此我們需要安裝svn來獲取源碼。安裝過程中會用到cmake工具來生成Makefile,需要先安裝cmake。
2 sudo apt-get install cmake
3 sudo apt install gcc
sudo apt install g++
4 mkdir /tmp/llvm_source_build #構建安裝目錄
5
cd /tmp/llvm_source_build
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
#下載LLVM核心代碼
此時在/tmp/llvm_source_build目錄下就會有一個llvm目錄
報錯:svn: E000104: 執行上下文錯誤: 連接被對方重設
嘗試各種方法,但是都無法解決這個錯誤,只能從官方llvm網址上下載,建議採用XDown下載器下載(快)
下載之後,複製到/tmp/llvm_source_build目錄下,並解壓,如下圖:
5 同樣的方式完成cfe(也就是clang)、clang-tools-extra、compiler-rt,libcxx,libcxxabi等模塊,但是要注意的是,要將各個模塊放入對應的文件夾中才行,否則後續會出現錯誤,同時版本最好一致。
6 在/tmp/llvm_source_build下新建build文件夾,準備安裝llvm+clang
7 下面的-CMAKE_INSTALL_PREDIX=/opt/llvm 表示要安裝的目錄
cd build
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_INSTALL_PREFIX=/opt/llvm ../llvm
然而,若報錯以下問題:
解決方法:參考https://stackoverflow.com/questions/53278637/ubuntu-18-04-no-cmake-c-compiler-could-be-found發現並沒有安裝g++,然後安裝了g++,再運行cmake命令,完成安裝。因此在安裝初步,建議先更新工具鏈博客(前面已經補充):
sudo apt install gcc
sudo apt install g++
8 進行安裝,-j 8 是選擇核心數,根據自己的需要來改,這步驟需要時間很長,可以先去睡覺了
make
sudo make install
然而還是報錯了
解決方法:1 collect2: ld terminated with signal 9這個錯誤是由於交換區swap空間太小而引起的,解決方案參考博客或者博客2,注意,需要su權限纔行。
passwd#設置新的密碼
su
sudo mkdir swapfile
cd swapfile
sudo dd if=/dev/zero of=swap bs=1024 count=16000000
chmod 0600 swap
sudo mkswap -f swap
sudo swapon swap # 打開
sudo swapoff swap # 卸載
可以通過 free -h來查看交換區的大小
然後進行make,sudo make install
9 設置環境變量
#配置一下環境變量
vim /etc/profile
#在末尾添加
export PATH=$PATH:/opt/llvm/bin
10 reboot 並驗證
至此,安裝部分已經完成了,下期博客介紹怎麼玩這個東西