Centos7 源碼安裝 Clang

安裝CMakehtml

必須是3.4.3以上版本,直接下載二進制設置到PATH環境變量就能夠了python

 

安裝編譯依賴c++

yum install python-devel libffi-devel graphviz-devel elfutils-libelf-devel readline-devel libedit-devel libxml2-devel protobuf-devel gtext-devel doxygen swig centos

 

下載clang源碼包、gtest rpm包 以及編譯好的clang二進制包ui

 

由於gtest yum源沒設置,因此直接使用rpm安裝了。spa

gtest我用的是gtest-1.6.0-2.el7.x86_64.rpm、gtest-devel-1.6.0-2.el7.x86_64.rpm版本包,xml

連接地址:https://centos.pkgs.org/7/epel-x86_64/gtest-1.6.0-2.el7.x86_64.rpm.htmlhtm

 

1)設置編譯環境(官網上編譯好的clang做用編譯器) blog

export LD_LIBRARY_PATH=/home/clang500/lib
export CC=/home/clang500/bin/clang
export CXX=/home/clang500/bin/clang++
export CXXFLAGS=-stdlib=libc++
export LDFLAGS='-lc++ -lc++abi -fuse-ld=lld'編譯器

 

2)設置llvm目錄,組件包只能放到固定目錄,固定名稱

首先解壓 llvm-7.0.0.src.tar.xz,生成目錄 llvm-7.0.0.src

llvm-7.0.0.src/tools 目錄下的組件:
解壓 cfe-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/tools/clang
解壓 lld-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/tools/lld
解壓 polly-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/tools/polly
解壓 lldb-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/tools/lldb

llvm-7.0.0.src/projects 目錄下的組件:
解壓 openmp-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/projects/openmp
解壓 libcxx-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/projects/libcxx
解壓 libcxxabi-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/projects/libcxxabi
解壓 libunwind-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/projects/libunwind
解壓 compiler-rt-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/projects/compiler-rt

clang 的子組件:
解壓 clang-tools-extra-7.0.0.src.tar.xz,重命名爲 llvm-7.0.0.src/tools/clang/tools/extra

 

編譯安裝clang

mkdir build; cd build; 

cmake .. -DLLVM_OPTIMIZED_TABLEGEN=ON -DLLVM_INCLUDE_DOCS=OFF -DLLVM_ENABLE_RTTI=ON -DLLVM_ENABLE_EH=ON -DLLVM_INSTALL_UTILS=ON -DWITH_POLLY=ON -DLINK_POLLY_INTO_TOOLS=ON -DLLVM_TARGETS_TO_BUILD=X86 -DLIBOMP_ARCH=x86_64 -DBUILD_SHARED_LIBS=ON -DLIBOMP_ENABLE_SHARED=ON -DLLVM_ENABLE_LIBCXX=ON -DLLDB_RELOCATABLE_PYTHON=ON -DLLVM_ENABLE_FFI=ON -DCMAKE_BUILD_TYPE=Release -DCLANG_DEFAULT_CXX_STDLIB=libc++ -DCLANG_INCLUDE_TESTS=OFF -DENABLE_LINKER_BUILD_ID=ON -DENABLE_X86_RELAX_RELOCATIONS=ON -DLIBCXXABI_INCLUDE_TESTS=OFF -DLIBCXX_INCLUDE_BENCHMARKS=OFF -DLIBCXX_INCLUDE_TESTS=OFF -DLIBOMP_TSAN_SUPPORT=ON -DLLDB_BUILD_INTEL_PT=OFF -DLLDB_INCLUDE_TESTS=OFF -DLLVM_ENABLE_OCAMLDOC=OFF -DLLVM_INCLUDE_EXAMPLES=OFF -DLLVM_INCLUDE_GO_TESTS=OFF -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INSTALL_BINUTILS_SYMLINKS=ON -DLLVM_TOOL_LLGO_BUILD=ON -DLLVM_TOOL_PARALLEL_LIBS_BUILD=ON -DLLVM_ENABLE_PIC=ON -DLIBUNWIND_ENABLE_SHARED=OFF -DLIBCXX_ENABLE_PEDANTIC=ON -DLIBCXXABI_LIBDIR_SUFFIX=64 -DLIBCXX_LIBDIR_SUFFIX=64 -DLIBUNWIND_LIBDIR_SUFFIX=64 -DLLVM_LIBDIR_SUFFIX=64

make -j8; make install

 

注意:這個遇到一個問題,若是gcc沒安裝的話,cmake的時候,會報沒法找到 -gcc -gcc_s 的錯誤,因此得須要安裝gcc,不懂是什麼緣由怎麼規避這個問題,或者自己clang就須要gcc的庫,但願有朋友幫忙解答一下,多謝!!

相關文章
相關標籤/搜索