make 命令详解

| 选择喜欢的代码风格  

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

make 命令安装:


-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 命令补充说明:


make 命令是 GNU 的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。

make 命令语法:


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>

make 命令选项:


-f:指定“makefile”文件;
-i:忽略命令执行返回的出错信息;
-s:沉默模式,在执行之前不输出相应的命令行信息;
-r:禁止使用build-in规则;
-n:非执行模式,输出所有执行命令,但并不执行;
-t:更新目标文件;
-q:make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息;
-p:输出所有宏定义和目标文件描述;
-d:Debug 模式,输出有关文件和检测时间的详细信息。

make 命令参数:


目标:指定编译目标。

Linux 下常用选项与 Unix 系统中稍有不同,下面是不同的部分

-c dir:在读取 makefile 之前改变到指定的目录dir;
-I dir:当包含其他 makefile文件时,利用该选项指定搜索目录;
-h:help文挡,显示所有的make选项;
-w:在处理 makefile 之前和之后,都显示工作目录。

make 命令知识扩展:


无论是在 Linux 还是在 Unix 环境 中,make 都是一个非常重要的编译命令。不管是自己进行项目开发还是安装应用软件,我们都经常要用到 makemake install。利用 make 工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和 makefile 工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。

而且如此多的源文件,如果每次都要键入 gcc 命令进行编译的话,那对程序员 来说简直就是一场灾难。而 make 工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

因此,有效的利用 make 和 makefile 工具可以大大提高项目开发的效率。同时掌握 make 和 makefile 之后,您也不会再面对着 Linux 下的应用软件手足无措了。

make 命令实例:


调用 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

make 命令扩展阅读:




make 命令评论