在将源代码传递给Clang进行编译时,以什么顺序执行哪些LLVM / Clang代码?
答案 0 :(得分:2)
你到底是什么意思?您是否对编译阶段感兴趣,或者您是否希望查看特定方法或类的堆栈跟踪?
编译阶段:
假设您通过在终端中键入clang
将一些源文件传递给clang main.c
。
clang
命令本身只是一个使用参数并调用实际编译器的驱动程序(您可以通过传递clang
-cc1
参数直接调用它。
然后,编译器本身执行以下任务:
#define
,#ifdef
等)。if
关键字,while
关键字,your_var
标识符等。)<强>堆栈跟踪:强>
如果你想看看堆栈跟踪或调试报告,那么自己构建Clang是有意义的。
以下是在通过Git将LLVM存储库克隆到硬盘驱动器后使用Xcode在OS X上编译LLVM / Clang的说明:
首先,下载LLVM的源文件:
mkdir ~/Projects/clang-dev
cd ~/Projects/clang-dev
git clone http://llvm.org/git/llvm.git
git clone http://llvm.org/git/clang.git llvm/tools/clang
git clone http://llvm.org/git/clang-tools-extra.git llvm/tools/clang/tools/extra
git clone http://llvm.org/git/compiler-rt.git llvm/projects/compiler-rt
您还可以通过将分支名称传递给每个克隆命令来指定确切的版本,例如:
git clone http://llvm.org/git/llvm.git -b release_34
接下来,创建并打开一个Xcode项目:
cd ~/Projects/clang-dev
mkdir build
cd build
cmake -G Xcode CMAKE_BUILD_TYPE="Debug" ../llvm
open LLVM.xcodeproj
将clang
设置为项目的当前目标/方案,单击“编辑方案”,并在运行时添加要作为参数传递给Clang的源文件:
这就是它;只需设置断点(使用main
方法或随时),然后点击Run
按钮(或按Cmd + R)。
<强> UPD 强>
以下是更详细的指南:Getting started with LLVM/Clang on OS X
有用的链接:
Architecture of Open-Source Applications: LLVM by Chris Lattner