make命令可以直接使用,也可以带一些其他选项
选项 | 含义 |
-C 路径名 | 读入指定目录下的Makefile |
-n | 只打印要执行的命令,但不执行这些命令 |
-l | 指定被包含的Makefile所在目录 |
-p | 显示make变量数据库和隐含规则 |
-s | 在执行命令时不显示命令 |
-i | 在执行命令时不显示命令 |
-f | 读入当前目录下的file文件作为Makefile |
选项 | 含义 |
-c | 仅对源文件进行编译,不链接生成可执行文件。在对源文件进行查错时,或只需产生目标文件时可以使用该选项。 |
-g[gdb] | 在可执行文件中加入调试信息,方便进行程序的调试。如果使用中括号中的选项,表示加入gdb扩展的调试信息,方便使用gdb来进行调试 |
-O[1、2、3、4] | 对生成的代码使用优化,中括号中的部分为优化级别,缺省的情况为2级优化,0为不进行优化。注意,采用更高级的优化并不一定得到效率更高的代码。 |
-I + 路径 | 注意是大写的 i,如 -I./include/core。在编译源程序时增加一个搜索头文件的额外目录(路径),即include增加个搜索的额外目录。 |
-L + 路径 | 在编译源文件时增加一个搜索库文件的额外目录(路径) |
-l + 库名 | 注意是小写的 L,如 -lpthread。在编译链接文件时增加一个额外的库 |
-w | 关闭编译时的警告,也就是编译后不显示任何warning |
-W | 显示警告,但是只显示编译器认为会出现错误的警告 |
-Wall | 编译后显示所有警告 |
-D | 添加宏定义。通过宏控制你的程序,需要哪个版本,修改宏即可。 |
注意事项:
这两者都是添加搜索路径,默认先去用户指定的路径下寻找,然后才是环境变量。
比如-L /home/hello/lib,表示将/home/hello/lib目录作为第一个寻找库文件的目录, 寻找的顺序是:/home/hello/lib =》/lib =》 /usr/lib =》/usr/local/lib
比如 -I /home/hello/include,表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include =》/usr/include =》 /usr/local/include
默认寻找的是动态库,比如要链接 libword.so 文件,那么引入方式就是 -lword(需要去掉前缀lib和后缀.so)
如果加上编译选项 -static ,表述寻找静态链接库文件,也就是 libword.a