Centos 7 編譯安裝llvm 8.0.0


參考連接:https://www.cnblogs.com/BinBinStory/p/7499527.html

https://blog.csdn.net/llwy1428/article/details/95473542

https://blog.csdn.net/u011181989/article/details/91334478

   

環境:centos 7.6 最小化安裝

需要准備的包以及說明

Centos 7.6 everything 包 用於掛載本地鏡像安裝相關依賴包

llvm-8.0.0.src.tar compiler-rt-8.0.0.src.tar clang-tools-extra-8.0.0.src.tar cfe-8.0.0.src.tar llvm8.0.0相關軟件包

cmake-3.9.6.tar.gz 編譯llvm需要的cmake包,版本不低於3.4.3

gcc-5.5.0.tar.gz 編譯需要的gcc版本不能低於5.1,centos 7.6原帶的版本是4.X

gmp-4.3.2.tar.bz2 升級gcc版本所需要的依賴包

mpc-0.8.1.tar.gz 升級gcc版本所需要的依賴包

mpfr-2.4.2.tar.bz2 升級gcc版本所需要的依賴包

   

開始,如果想一次報錯都不出現,請把文檔看完,先解決編譯安裝llvm的基礎環境之后再安裝,本次安裝使用的全新的操作系統,關閉了防火牆和selinux,嘗試直接編譯llvm,並遇見報錯,解決報錯的過程。

   

上傳軟件包到/root下,升級gcc版本的主程序和依賴包上傳到/root/gcc目錄下

   

解壓llvm相關的軟件包

tar xvf cfe-8.0.0.src.tar

tar -xvf clang-tools-extra-8.0.0.src.tar

tar -xvf compiler-rt-8.0.0.src.tar

tar -xvf llvm-8.0.0.src.tar

   

執行改名,移動操作,讓clangclang-tools-extracompiler-rt就可以和llvm一起編譯

mv cfe-8.0.0.src clang

mv clang/ llvm-8.0.0.src/tools/

mv clang-tools-extra-8.0.0.src extra

mv extra/ llvm-8.0.0.src/tools/clang/

mv compiler-rt-8.0.0.src compiler-rt

mv compiler-rt llvm-8.0.0.src/projects/

   

llvm-8.0.0.src同級目錄上新建目錄,名稱為build-8.0.0

mkdir build-8.0.0

cd build-8.0.0/

然后執行cmake編譯

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/

提示沒有cmake,下面掛載光盤安裝cmake

yum install -y cmake

再次執行cmake編譯

報錯cmake版本太低,不能低於3.4.3

下面解決cmake版本低的問題,升級cmake到3.9.6版本,首先准備好包,

安裝gcc gcc-c++包以執行編譯

yum install gcc gcc-c++ -y

卸載原有的cmake

yum remove cmake -y

解壓所新版本的cmake並編譯安裝

tar -zxvf cmake-3.9.6.tar.gz

cd cmake-3.9.6

./configure --prefix=/usr/local/cmake

make -j3

make install

創建軟連接

ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

查看cmake版本

cmake -version

至此,cmake版本升級結果,下面再次嘗試編譯llvm

cd /root/build-8.0.0/

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On ../llvm-8.0.0.src/

又報錯了

這次報錯提示c++版本為4.8.5,推薦的版本不能低於5.1

下面開始升級c++版本

進入之前准備好的gcc目錄,解壓,安裝gcc軟件包和相關依賴包並且創建連接

tar xvf gcc-5.5.0.tar.gz

cp gmp-4.3.2.tar.bz2 mpc-0.8.1.tar.gz mpfr-2.4.2.tar.bz2 /root/gcc/gcc-5.5.0

cd gcc-5.5.0

yum install -y bzip2

tar -xjf mpfr-2.4.2.tar.bz2

ln -sf mpfr-2.4.2 mpfr

tar xjf gmp-4.3.2.tar.bz2

ln -sf gmp-4.3.2 gmp

tar xzf mpc-0.8.1.tar.gz

ln -sf mpc-0.8.1 mpc

編譯gcc-c++和gcc

./configure --prefix=/usr/local/gcc --enable-bootstrap --enable-checking=release --enable-languages=c,c++ --disable-multilib

執行make 和make install

時間較長,使用make -j3 使用3線程執行make ,使用3線程make大概執行了40分鍾

make -j3

make install

添加環境變量

vi /etc/profile

export PATH=/usr/local/gcc/bin:$PATH

生效

source /etc/profile

查看gcc版本

已經升級成功

下面繼續llvm的安裝

依然報錯版本不夠,有可能的系統存在多個版本的gcc cmake還沒有默認使用的自帶的gcc 還是舊版本,這時候給添加編譯參數,指定gcc路徑。命令如下

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/

依然報錯

報錯配置不完整,但是程序已經更新了下面的gcc的變量,所以只需要再次執行cmake編譯即可

cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=/usr/local/clang -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=On -DCMAKE_CXX_COMPILER=/usr/local/gcc/bin/c++ -DCMAKE_C_COMPILER=/usr/local/gcc/bin/gcc ../llvm-8.0.0.src/

cmake編譯成功,執行make -j3 操作

make -j3

時間較長,后續還有報錯,耐心等待。

報錯了,這個報錯是因為升級gcc之后動態鏈接庫中缺少GLIBCXX_3.4.20GLIBCXX_3.4.21文件導致,以下為修改該錯誤的過程

查看現有動態鏈接庫的文件

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

查找系統上所有的libstdc++.so文件

find / -name "libstdc++.so*"

復制需要的libstdc++.so文件到/usr/lib64目錄

cp /usr/local/gcc/lib64/libstdc++.so.6.0.21 /usr/lib64

刪除舊版本的libstdc++.so.6文件

cd /usr/lib64/

rm -rf libstdc++.so.6

創建鏈接到新版本的libstdc++.so.6文件

ln -s libstdc++.so.6.0.21 libstdc++.so.6

查看更新后的libstdc++.so.6文件包含的動態鏈接庫

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

可以看到上面報錯缺少的GLIBCXX_3.4.20GLIBCXX_3.4.21文件已經存在

繼續make j3

cd /root/build-8.0.0/

make -j3

已經解決百分之28時的報錯。至此錯誤都已解決,靜靜等待make完畢,速度較慢,4核8G的虛擬機,估計要40分鍾甚至更多。

make 完成

下面執行make install

安裝完成

cd /usr/local/clang/

./clang --version

   

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM