Skip to content

Latest commit

 

History

History
60 lines (47 loc) · 3.56 KB

File metadata and controls

60 lines (47 loc) · 3.56 KB

方便使用的编译选项集合

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