download code 1 2 3 git clone git@github.com:chenghanpeng/llvm-project.git cd llvm-projectgit switch release/15.x
Linux
build.sh 内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #!/bin/bash mkdir -p buildcd buildif [ ! -f bin/llvm-lto ]; then CORE_NUM=$(nproc --all) if [ -z "${CORE_NUM} " ]; then CORE_NUM=1 fi echo "Build llvm with" ${CORE_NUM} "cores" cmake /mnt/Compiler/llvm-project/llvm \ -G "Unix Makefiles" \ -DCMAKE_BUILD_TYPE="Debug" \ -DLLVM_TARGETS_TO_BUILD="X86;AArch64;BPF;Hexagon" \ -DLLVM_ENABLE_PROJECTS="clang" \ -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" cmake --build . else echo "llvm has already been built" fi
1 2 $ chmod +x build.sh $ ./build.sh
MacOs 构建LLVM依赖git和cmake,可使用brew安装git和cmake
安装依赖 1 2 3 4 5 6 7 8 9 10 11 12 13 14 $ which brew brew not found $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh) " $ which brew $ brew install git $ git --version $ brew install cmake $ which cmake
构建LLVM 1 2 3 4 5 6 7 $ cd llvm-project $ mkdir build && cd build $ cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug DLLVM_TARGETS_TO_BUILD="X86;AArch64;BPF;Hexagon" -DLLVM_ENABLE_PROJECTS="clang" ../llvm $ make -j32 $ cd bin & ls $ clang -v clang version 15.0.6 ...
macOS上使用自己源码构建的clang编译源文件 1 2 3 4 $ clang -emit-llvm -S -isysroot `xcrun --show-sdk-path` hello.c -o hello.ll $ llc hello.ll --march=bpf -o hello.s -debug >hello.log 2>&1