1、-g -wall
-g 编译器编译时加入debug信息
-Wall 就是打开所有的警告
-Wall 这个的意思是wring all 意思在编译和链接过程中显示所有警告信息
2、-I -l -L
例:
gcc -o hello hello.c -I/home/hello/include -L/home/hello/lib -lworld
上面这句表示在编译hello.c时:
-
-I /home/hello/include,表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include
- 也就是指定优先查找的目录,找不到的话查找默认目录
-
-L /home/hello/lib,表示将/home/hello/lib目录作为第一个寻找库文件的目录, 寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib
- 同上,也是指定优先查找的目录
-
-l word , 表示**寻找动态链接库文件**libword.so(也就是文件名去掉前缀和后缀所代表的库文件)
- 如果 加上编译选项-static,表示寻找静态链接库文件,也就是libword.a
3、$(wildcard *.c) (wildcard : 扩展通配符)
一般我们可以使用“$(wildcard *.c)”来获取工作目录下的所有的.c文件列表
4、模式字符串替换函数——patsubst
$(patsubst %.c,%.o, a.c b.c)
把字串“a.c b.c”符合模式[%.c]的单词替换成[%.o],返回结果是“a.o b.o”