A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
-bash: make: command not found #Debian apt-get install make #Ubuntu apt-get install make #Alpine apk add make #Arch Linux pacman -S make #Kali Linux apt-get install make #CentOS yum install make #Fedora dnf install make #OS X brew install make #Raspbian apt-get install make #Docker docker run cmd.cat/make make
make
命令是 GNU 的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。
make [ -f makefile ] [ options ] ... [ targets ] ... Options: -b, -m Ignored for compatibility. -B, --always-make Unconditionally make all targets. -C DIRECTORY, --directory=DIRECTORY Change to DIRECTORY before doing anything. -d Print lots of debugging information. --debug[=FLAGS] Print various types of debugging information. -e, --environment-overrides Environment variables override makefiles. -f FILE, --file=FILE, --makefile=FILE Read FILE as a makefile. -h, --help Print this message and exit. -i, --ignore-errors Ignore errors from commands. -I DIRECTORY, --include-dir=DIRECTORY Search DIRECTORY for included makefiles. -j [N], --jobs[=N] Allow N jobs at once; infinite jobs with no arg. -k, --keep-going Keep going when some targets can't be made. -l [N], --load-average[=N], --max-load[=N] Don't start multiple jobs unless load is below N. -L, --check-symlink-times Use the latest mtime between symlinks and target. -n, --just-print, --dry-run, --recon Don't actually run any commands; just print them. -o FILE, --old-file=FILE, --assume-old=FILE Consider FILE to be very old and don't remake it. -p, --print-data-base Print make's internal database. -q, --question Run no commands; exit status says if up to date. -r, --no-builtin-rules Disable the built-in implicit rules. -R, --no-builtin-variables Disable the built-in variable settings. -s, --silent, --quiet Don't echo commands. -S, --no-keep-going, --stop Turns off -k. -t, --touch Touch targets instead of remaking them. -v, --version Print the version number of make and exit. -w, --print-directory Print the current directory. --no-print-directory Turn off -w, even if it was turned on implicitly. -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE Consider FILE to be infinitely new. --warn-undefined-variables Warn when an undefined variable is referenced. This program built for x86_64-redhat-linux-gnu Report bugs to <bug-make@gnu.org>
-f:指定“makefile”文件; -i:忽略命令执行返回的出错信息; -s:沉默模式,在执行之前不输出相应的命令行信息; -r:禁止使用build-in规则; -n:非执行模式,输出所有执行命令,但并不执行; -t:更新目标文件; -q:make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息; -p:输出所有宏定义和目标文件描述; -d:Debug 模式,输出有关文件和检测时间的详细信息。
目标:指定编译目标。
Linux 下常用选项与 Unix 系统中稍有不同,下面是不同的部分:
-c dir:在读取 makefile 之前改变到指定的目录dir; -I dir:当包含其他 makefile文件时,利用该选项指定搜索目录; -h:help文挡,显示所有的make选项; -w:在处理 makefile 之前和之后,都显示工作目录。
无论是在 Linux 还是在 Unix 环境 中,make
都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到 make
或 make install
。利用 make 工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile 工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。
而且如此多的源文件,如果每次都要键入 gcc 命令进行编译的话,那对程序员 来说简直就是一场灾难。而 make 工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
因此,有效的利用 make 和 makefile 工具可以大大提高项目开发的效率。同时掌握 make 和 makefile 之后,您也不会再面对着 Linux 下的应用软件手足无措了。
调用 Makefile 中指定的第一个目标(通常命名为 all
):
make
make 命令常用例子:
#make 特定目标: make target #调用一个特定的目标,一次并行执行4个作业: make -j4 target #使用特定的Makefile: make --file file #从另一个目录执行make: make --directory directory #即使源文件未更改,也强制执行目标: make --always-make target
make 命令编译安装,最后常用组合命令:
make && make install