ubuntu 虛擬機環境下 安裝 配置 Clang/LLVM
前言
我的是ubuntu 16.04 64bit系統,其它版本的系統,應該是一樣的。
重點:
LLVM非常耗內存,LLVM非常耗內存,LLVM非常耗內存,實測需要10G左右內存,沒有這個內存,肯定需要一些其他方法來進行相關處理!!!!
step 0 為大內存編譯/鏈接做準備
1.為虛擬機至少預留100G硬碟存儲
2.將ld鏈接器,修改為gold鏈接器
cd /usr/bin
rm ld
cp -d gold ld
主要原因是因為LLVM是C++編寫的大型軟體,在link的時候,非常耗內存!
將ld改為gold,能有效降低內存使用量
3.swap交換區
因為內存不夠,所以只能swap交換區來湊。
1. 由於創建交換區用到的部分命令需要較高許可權,先獲取 root 許可權:usrname@ubuntu:~$ sudo -i。退出 root 時只需要鍵入 exit 即可回到用戶許可權。 2. 創建 8GB 的空文件: dd if=/dev/zero of=/tmp/swap1 bs=1M count=8192; 3. 把 /tmp/swap1 格式化為交換分區:mkswap /tmp/swap1; 4. 使用 free 命令查看交換分區大小: free 5. 掛載交換分區:swapon /tmp/swap1;如果要去掉新增加的 swap 分區,使用「swapoff /tmp/swap1」即可。
建議
swap分區大小+memory內存大小總和 > 10GB
如果內存大小不夠,make的時候,會兒出現各種莫名其妙的錯誤。
step1 首先是安裝環境的準備
sudo apt install subversionsudo apt install cmake
有些版本的LLVM對cmake的版本有最低要求,按照相關要求進行處理就行了。
step2 下載源碼
下載源碼的方式很多,隨便選一種就行了,下面以5.0版本為例。
建立如下目錄形式的目錄
/home/user/llvm --sourcecode --build --installcd sourcecode
下載相關源代碼:
svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_500/final llvmcd llvm/toolssvn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_500/final clang
如果需要使用C++11,需要下載相關的庫
cd llvm/projectssvn co http://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_500/final libcxxsvn co http://llvm.org/svn/llvm-project/libcxxabi/tags/RELEASE_500/final libcxxabi
其它的相關組件,根據自己需要,進行下載
step3 cmake源碼
cd buildcmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=../install ../sourcecode/llvm
-G選項,用於生成相關的makefile,具體情況請man一下
DCMAKE_BUILD_TYPE=Debug,用於生成Debug版本的安裝包
DCMAKE_BUILD_TYPE=Release,用於生成Release版本的安裝包,如果用這個選項,則4G的內存夠也!!!!
DCMAKE_INSTALL_PREFIX=../install ,將LLVM安裝到的目錄
step 4 make&make install
make
時間大概是18小時,不要急,慢慢等。
make install
step 5將clang和相關庫加入PATH路徑和共享庫路徑中
cd ~vim ./bashrcexport PATH=$PATH:~/llvm/install/binexport LD_LIBRARY_PATH=~/llvm/install/lib
step 6 測試是否安裝成功
clang --versionclang++ --versionvim xxx.cvim xxx.cppclang xxx.cclang++ xxx.cpp
OK,安裝成功,接下來就可以修改LLVM源碼,看看編譯器能出啥效果了。
主要參考文獻:
1.手把手教你在Ubuntu下安裝clang和libc++
2.Ubuntu 虛擬機環境下配置 Clang/LLVM - CSDN博客
下一步的動作,請移步以下鏈接:
robbertl:安裝LLVM後的開發環境的搭建※C++: std::bind – Tutorial and Examples
※學習筆記之JIT編譯過程
※windows下安裝,配置gcc編譯器
※淺談編譯代碼時用的居中方法
※機器學習與編譯優化的入門介紹