编译器
在 mac 平台下,编译器是 GCC/CLANG
。
1
|
gcc/clang -g -O2 -o test test.c -I... -L... -l...
|
-g
: 输出文件增加调试信息
-O
: 指令优化级别,-O1
不优化,-O2
代表第二个级别优化。
-o
: 可执行程序输出的名字
test.c
: 在这里是源代码文件
-I
: 指定头文件
-L
: 指定库文件位置
-l
: 指定使用哪个库
编译过程
- 预编译,将头文件与源代码合在一起,会形成一个新的文件
- 编译,生成
.o
文件,这是中间文件,是可执行程序的一部分
- 链接,将
.o
文件与第三方库/系统库链接到一起
1
2
3
4
5
6
|
// vim add.c
#include <stdio.h>
void add(int a,int b){
printf("%d\n",a+b);
}
|
1
2
3
|
clang -g -c add.c
# 链接
libtool -static -o libadd.a add.o
|
1
2
|
// 创建 add.h 文件
void add(int a,int b);
|
调用文件
1
2
3
4
5
6
7
|
#include <stdio.h>
// 引号表示优先在本地目录搜索,也可以用尖括号指定位置
#include "add.h"
int main(){
add(5,3);
return 0;
}
|
编译
1
|
gcc -g -o test main.c -I . -L . -l add
|
调试
Mac 下是 lldb
Linux 下是 gdb
说明 |
命令 |
英文 |
设置断点 |
b |
break |
运行程序 |
r |
run |
单步执行 |
n |
next |
跳入函数 |
s |
step |
跳出函数 |
finish |
|
打印内容 |
p |
print |
退出 |
q |
quit |
查看所有断点 |
break l |
break list |
使用 -g
加入调试信息,在目录下也会生成 test.dSYM
目录