Clang基本命令
基础
当我们提到Clang
时,可能有三种意思:
- 前端(表现为Clang Libraries)
- 编译器驱动 (表现为
clang
命令和clang driver的库) - 实际的编译器(表现为
clang -cc1
命令,该命令并不仅仅使用了Clang的库,同时大量使用了LLVM中的库和集成的汇编器,从而实现编译器中端和后端的功能)
Clang Driver
查看实际调用的命令
使用-###
来查看实际调用命令,但是这个命令这次不会执行。
1 | $ clang -### test.c -o test |
常用命令
测试代码
1 | // main.c |
1 | // sum.c |
查看帮助信息
1 | clang --help |
查看编译的阶段过程
1 | $ clang -ccc-print-phases main.c sum.c -o sum |
预处理
1 | $ clang -E main.c -o main.i |
词法分析
通过driver
1 | $ clang -Xclang -dump-tokens main.c |
通过clang -cc1
1 | $ clang -cc1 -dump-tokens main.c |
语法分析,打印AST
通过driver
有色:
1 | $ clang -fsyntax-only -Xclang -ast-dump main.c |
通过clang -cc1
无色:
1 | $ clang -cc1 -fsyntax-only -ast-dump main.c |
生成AST文件
1 | $ clang -emit-ast main.c |
编译,生成IR
未优化的IR
1 | $ clang -emit-llvm -c main.c -o main.ll |
优化后的IR
1 | $ clang -emit-llvm -c main.c -o main.bc -O3 |
链接,生成可执行代码
1 | $ clang main.c sum.c -o sum |
- 本文链接:http://katherineleeyq.cn/2017/11/04/Clang基本命令/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 CN 许可协议。转载请注明出处!