最近笔者遇到了一个问题,想看一下在大规模软件应用中有多少情况,想使用clang去探测这种情况,这就需要指定自定义的编译器。
编译clang
本次使用的是openEuler的LLVM工具,提供一个编译命令:
cmake -S llvm -B build -G "Unix Makefiles" -DLLVM_ENABLE_PROJECTS="clang;lld" -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_INSTALL_PREFIX="XXX path you want to run" -DCMAKE_BUILD_TYPE="release"
cmake --build build --target install -j4
修改上述指令的prefix指定安装目录,会将LLVM安装到该路径下,该路径下的bin/clang文件就是编译成的clang编译器。
-j后面的数字可以修改,指的是并行的任务数量,可以根据自己处理器的能力决定。
使用clang编译git项目
首先使用
sudo apt-get install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev \
gettext libz-dev libssl-dev
安装需要的软件。
然后使用
make configure
构建出configure工具。
然后指定上述操作构建出的编译器。 例如
CC=XXX ./configure
特别注意:如果使用openEuler的编译器,此步骤需要指定target平台。也即:
CC=XXX CFLAGS="-target x86_64-linux-gnu" ./configure