00. 目录
01. 命令概述
make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。
02. 命令格式
用法:make [选项] [目标] ...
03. 常用选项
-b, -m 忽略兼容性。
-B, --always-make 无条件 make 所有目标。
-C DIRECTORY, --directory=DIRECTORY
在执行钱先切换到 DIRECTORY 目录。
-d 打印大量调试信息。
--debug[=FLAGS] 打印各种调试信息。
-e, --environment-overrides
环境变量覆盖 makefile 中的变量。
--eval=STRING Evaluate STRING as a makefile statement.
-f FILE, --file=FILE, --makefile=FILE
从 FILE 中读入 makefile。
-h, --help 打印该消息并退出。
-i, --ignore-errors Ignore errors from recipes.
-I DIRECTORY, --include-dir=DIRECTORY
在 DIRECTORY 中搜索被包含的 makefile。
-j [N], --jobs[=N] 同时允许 N 个任务;无参数表明允许无限个任务。
-k, --keep-going 当某些目标无法创建时仍然继续。
-l [N], --load-average[=N], --max-load[=N]
在系统负载高于 N 时不启动多任务。
-L, --check-symlink-times 使用软链接及软链接目标中修改时间较晚的一个。
-n, --just-print, --dry-run, --recon
Don't actually run any recipe; just print them.
-o FILE, --old-file=FILE, --assume-old=FILE
将 FILE 当做很旧,不必重新生成。
-p, --print-data-base 打印 make 的内部数据库。
-q, --question Run no recipe; exit status says if up to date.
-r, --no-builtin-rules 禁用内置隐含规则。
-R, --no-builtin-variables 禁用内置变量设置。
-s, --silent, --quiet Don't echo recipes.
-S, --no-keep-going, --stop
关闭 -k。
-t, --touch touch 目标而不是重新创建它们。
-v, --version 打印 make 的版本号并退出。
-w, --print-directory 打印当前目录。
--no-print-directory 关闭 -w,即使 -w 默认开启。
-W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE
将 FILE 当做最新。
--warn-undefined-variables 当引用未定义变量的时候发出警告。
--warn-undefined-functions Warn when an undefined user function is called.
04. 参考示例
4.1 编译程序
[deng@localhost 8make]$ make
gcc mul.o test.o add.o sub.o -o test
[deng@localhost 8make]$
4.2 显示编译命令,但是实际上不编译
[deng@localhost 8make]$ make -n
gcc -c mul.c -o mul.o
gcc -c test.c -o test.o
gcc -c add.c -o add.o
gcc -c sub.c -o sub.o
gcc mul.o test.o add.o sub.o -o test
[deng@localhost 8make]$
4.3 清理编译生成的中间文件
[deng@localhost 8make]$ make clean
rm -rf ./mul.o ./test.o ./add.o ./sub.o test
[deng@localhost 8make]$
4.4 编译,不显示执行的命令
[deng@localhost 8make]$ make -s
[deng@localhost 8make]$
4.5 处理 makefile 之前和之后,都显示工作目录
[deng@localhost 8make]$ make -w
make: 进入目录“/mnt/hgfs/LinuxHome/code/3rd/2Makefile/8make”
gcc mul.o test.o add.o sub.o -o test
make: 离开目录“/mnt/hgfs/LinuxHome/code/3rd/2Makefile/8make”
[deng@localhost 8make]$
4.6 以四线程编译程序
[deng@localhost 8make]$ make -j4
gcc mul.o test.o add.o sub.o -o test
[deng@localhost 8make]$
05. 附录
转载:https://blog.csdn.net/dengjin20104042056/article/details/101354793
查看评论