Clang#
认识 LLVM 和 Clang#
LLVM(Low Level Virtual Machine)是一个开源的编译器基础设施项目,它提供了一组模块化和可重用的编译器和工具链技术。LLVM 包括一个前端,用于解析源代码并生成中间表示(IR),以及一系列后端,用于将 IR 转换为目标机器代码。
Clang 是基于 LLVM 构建的 C、C++ 和 Objective-C 编译器。Clang 继承了 LLVM 的许多特性,如中间表示(IR)和代码优化,同时还提供了一些额外的功能,如代码补全、静态分析和重构工具。
简而言之,LLVM 是一个框架,而 Clang 是使用该框架构建的编译器。Clang 是 LLVM 的一个重要组成部分,因为它利用了 LLVM 的中间表示和优化技术来提高编译速度和生成更高效的代码。
安装 Clang#
参考 https://apt.llvm.org,在安装 LLVM 的同时,也就把 Clang 装好了。
sudo apt install llvm clang clang-tools binutils-aarch64-linux-gnu \
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
在嵌入式平台上使用 Yocto(meta-clang)交叉编译 Clang,详细步骤参见 Yocto。
可视化 C++ 调用链#
使用 Clang++ 可视化调用#
安装 MSYS2:https://www.msys2.org/
安装 Clang++:
pacman -S mingw-w64-x86_64-clang安装 Graphviz:https://graphviz.org/
运行下面的命令:
clang++ -S -emit-llvm demo.cpp -o dump.txt
opt -passes=dot-callgraph dump.txt -o callgraph.dot
dot -Tpng dump.txt.callgraph.dot -o callgraph.png