在CentOS系統上編譯llvm源碼

在公司使用llvm開發編譯器,剛入門,嘗試在一個CentOS系統上編譯llvm的源碼,本文是對過程的簡要記錄以及遇到的一些問題的記錄。

操作步驟

下載llvm庫

cd /home/PWE/
git clone https://github.com/llvm/llvm-project.git

開始構建

cd llvm-project
mkdir build
cd build
cmake -G Ninja -DCMAKE_BUILD_TYPE="Debug" -DLLVM_ENABLE_PROJECTS="clang;libcxx;libcxxabi" ../llvm
ninja && ninja install

說明

  • cmake這一步,只指定了構建類型和允許編譯子項目,構建類型不指定時默認也是Debug,可省略;另外沒有指定安裝路徑,所以會安裝到默認路徑/usr/local,如果需要指定,則使用-DCMAKE_INSTALL_PREFIX="../install_path/";其他參數請參考官網。
  • cmake這一步,我使用了ninja作爲構建工具,因爲llvm官網推薦用ninja,如果要使用gnu make或其他工具,請參考官網。

##在這裏插入代碼片 遇到問題

  1. 提示缺少cmake

    解決:安裝cmake,sudo yum install cmake,之後重新執行時,提示我cmake的版本過低,需要至少3.4版本,於是從網上下載了cmake的源碼,卸載低版本cmake,修改環境變量指向高版本cmake,參考:https://www.jianshu.com/p/b283fad5e4de

  2. 提示缺少Ninja:

    CMake Error: CMake was unable to find a build program corresponding to “Ninja”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.

    **解決:**安裝Ninja,按照要求編譯:./configure.py --bootstrap,之後把路徑下生成的ninja複製到/usr/local/bin下邊,參考:https://ninja-build.org/。注意在編譯ninja之前需要安裝re2cGLIBCXX_3.4.21。安裝re2c稍微麻煩一些,下載源碼後,編譯安裝,參考:https://www.24kplus.com/linux/549.html

  3. 提示gcc版本過低,要求5.1以上版本

    **解決:**安裝高版本gcc,源碼編譯安裝。當時這個問題困擾了我很久,原因是編譯gcc升級高版本這件事本身就陷阱重重,編譯過程中遇到不少問題,後來也沒有成功。最後的解決方案是安裝了高版本的CentOS,之前是6.9,後來改成了8,CentOS 8上自帶的gcc是8.2.1版本,問題自然解決。

  4. 提示缺少高版本的GLIBCXX

    ninja: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’ not found (required by ninja)

    ninja: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.20’ not found (required by ninja)

    **解決:**因爲在升級gcc之後,沒有更新新版本的動態庫。將編譯新版本gcc的路徑下的lib64中的libstdc++.so.6.0.21複製到/usr/lib64/下邊,然後修改下邊的軟鏈接到這個庫ln -s libstdc++.so.6.0.21 libstdc++.so.6。參考:https://itbilu.com/linux/management/NymXRUieg.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章