方便使用的编译选项集合
| clang编译选项集合 | ||
|---|---|---|
| llvm-config --system-libs | llvm编译时需要链接的系统库 | |
| llvm-config --cxxflags | TODO ,链接的库不一定不全,需要自行根据需要补充 | |
单个的选项
| clang编译选项 | 含义 | 示例跳转 | |
|---|---|---|---|
| -fno-rtti | 如果使用的llvm库编译时没有链接RTTI,添加该选项可以避免链接错误 | ||
| -### | 查看编译工具为了完成命令而调用的所有其他工具 | ||
| -emit-llvm | 和-c标志一起使用,告诉clang以LLVM位码的格式生成一个目标文件。 和-S -c标志一起使用,生成人工可读的LLVM汇编码。 |
.bc是LLVM位码的文件扩展名; .ll则是LLVM汇编文件的扩展名。 |
|
| -Xclang | Clang驱动程序通过-cc1选项生成另一个自身实例,以调用其中内部编译器。通过在编译器驱动程序中使用-Xclang可以将特定参数传递给该命令行工具。 | link |
| llc标志 | ||
|---|---|---|
| -filetype=obj | 指定输出目标文件格式,而不是目标汇编文件 | |
| -debug | 输出后端活动的详细日志。PS:刻意练习,读懂该日志,可了解后端内部发生的所有过程。 | |
| -debug-only= | 指定调试输出的部分。以上两个标志,仅在LLVM以调试模式(配置时使用--disable-optimized)编译时才可用。 |
hello.c
hello.c文件内容
```C #include int main() { printf("Hello, World!\n"); return 0; } ```clang -Xclang -ast-dump examples/Ch3/hello.c
clang -Xclang -ast-dump examples/Ch3/hello.c 部分输出
……
`-FunctionDecl 0x2b3e4d0 line:2:5 main 'int ()'
`-CompoundStmt 0x2b3e6b0
|-CallExpr 0x2b3e610 'int'
| |-ImplicitCastExpr 0x2b3e5f8 'int (*)(const char *, ...)'
| | `-DeclRefExpr 0x2b3e570 'int (const char *, ...)' Function 0x2b30310 'printf' 'int (const char *, ...)'
| `-ImplicitCastExpr 0x2b3e658 'const char *'
| `-ImplicitCastExpr 0x2b3e640 'char *'
| `-StringLiteral 0x2b3e598 'char [15]' lvalue "Hello, World!\n"
`-ReturnStmt 0x2b3e690
`-IntegerLiteral 0x2b3e670 'int' 0