安裝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的庫,但願有朋友幫忙解答一下,多謝!!