1, -E(大写),预处理
- 例子:gcc -E test.cpp -o test.i
- 预处理,把程序里的#开头的替换掉,比如#include,然后生成test.i
2,-P(大写),去掉预处理生成的杂乱信息
- -E后生成的文件里面有很多杂乱的信息,用-P可以去掉杂乱的信息。
3,-S(大写),生成汇编文件
- -masm=att 生成AT&T格式的汇编文件
- -masm=intel 生成intel格式的汇编文件
4,-c(小写),只编译不链接,生成二进制文件
- 把生成的二进制文件再转回汇编代码的方法:objdump -D main.o
- objdump -M intel 和 objdump -M att,分别生成intel格式的汇编代码和AT&T格式的汇编代码
5,-D 指定宏
假如有下面的代码:
#include <stdio.h>
int main(){
#ifdef DEBUG
printf("DEBUG LOG\n");
#endif
printf("in\n");
}
在编译的时候,使用【-D DEBUG】,【printf("DEBUG LOG\n");】就可以被执行。
6,-Wall 显示更多的警告信
比如:定义了一个变量c,但是你没有使用它。加上-Wall就会出c没有被使用的警告信息,不加就不会出。
int main(){
int c;
#ifdef DEBUG
printf("DEBUG LOG\n");
#endif
printf("in\n");
}
警告信息:
test.c: In function ‘main’:
test.c:4:7: warning: unused variable ‘c’ [-Wunused-variable]
int c;
^
7,用gcc编译c++的源文件:【-lstdc++】
gcc -g hello.cpp -lstdc++
8,优化代码(大写的):-O1,-O2,-O3
优化内容:让代码效率更高,要逐级的实验,先从1开始。
比如有两个变量int a = 10, b = 10;优化后,就尽量使用一个等;函数调用的地方,直接把调用去掉,替换成函数的代码等。