xgqfrms™, xgqfrms® : xgqfrms's offical website of cnblogs! xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!

Linux shell command make All In One

Linux shell command make All In One

GNU Make

$ make -v
GNU Make 4.3
为 aarch64-unknown-linux-gnu 编译
Copyright (C) 1988-2020 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。

man make

$ man make > man-docs/make.md

pi@raspberrypi:~/Desktop $ cat  man-docs/make.md

MAKE(1)                                             User Commands                                            MAKE(1)

NAME
       make - GNU make utility to maintain groups of programs

SYNOPSIS
       make [OPTION]... [TARGET]...

DESCRIPTION
       The  make utility will determine automatically which pieces of a large program need to be recompiled, and is‐
       sue the commands to recompile them.  The manual describes the GNU implementation of make, which  was  written
       by  Richard Stallman and Roland McGrath, and is currently maintained by Paul Smith.  Our examples show C pro‐
       grams, since they are very common, but you can use make with any programming language whose compiler  can  be
       run  with  a  shell  command.  In fact, make is not limited to programs.  You can use it to describe any task
       where some files must be updated automatically from others whenever the others change.

       To prepare to use make, you must write a file called the makefile  that  describes  the  relationships  among
       files  in your program, and the states the commands for updating each file.  In a program, typically the exe‐
       cutable file is updated from object files, which are in turn made by compiling source files.

       Once a suitable makefile exists, each time you change some source files, this simple shell command:

              make

       suffices to perform all necessary recompilations.  The make program uses the  makefile  description  and  the
       last-modification  times  of  the  files  to decide which of the files need to be updated.  For each of those
       files, it issues the commands recorded in the makefile.

       make executes commands in the makefile to update one or more target names, where name is typically a program.
       If no -f option is present, make will look for the makefiles GNUmakefile, makefile, and Makefile, in that or‐
       der.

       Normally you should call your makefile either makefile or Makefile.  (We recommend Makefile  because  it  ap‐
       pears  prominently  near  the  beginning  of  a  directory  listing, right near other important files such as
       README.)  The first name checked, GNUmakefile, is not recommended for most makefiles.  You  should  use  this
       name  if  you  have  a makefile that is specific to GNU make, and will not be understood by other versions of
       make.  If makefile is '-', the standard input is read.

       make updates a target if it depends on prerequisite files that have been modified since the target  was  last
       modified, or if the target does not exist.

OPTIONS
       -b, -m
            These options are ignored for compatibility with other versions of make.

       -B, --always-make
            Unconditionally make all targets.

       -C dir, --directory=dir
            Change to directory dir before reading the makefiles or doing anything else.  If multiple -C options are
            specified, each is interpreted relative to the previous one: -C / -C etc is equivalent to -C /etc.  This
            is typically used with recursive invocations of make.

       -d   Print  debugging  information  in  addition  to normal processing.  The debugging information says which
            files are being considered for remaking, which file-times are being  compared  and  with  what  results,
            which  files actually need to be remade, which implicit rules are considered and which are applied---ev‐
            erything interesting about how make decides what to do.

       --debug[=FLAGS]
            Print debugging information in addition to normal processing.  If the FLAGS are omitted, then the behav‐
            ior  is  the same as if -d was specified.  FLAGS may be a for all debugging output (same as using -d), b
            for basic debugging, v for more verbose basic debugging, i for showing implicit rules, j for details  on
            invocation of commands, and m for debugging while remaking makefiles.  Use n to disable all previous de‐
            bugging flags.

       -e, --environment-overrides
            Give variables taken from the environment precedence over variables from makefiles.

       -f file, --file=file, --makefile=FILE
            Use file as a makefile.

       -i, --ignore-errors
            Ignore all errors in commands executed to remake files.

       -I dir, --include-dir=dir
            Specifies a directory dir to search for included makefiles.  If several -I options are used  to  specify
            several directories, the directories are searched in the order specified.  Unlike the arguments to other
            flags of make, directories given with -I flags may come directly after the flag: -Idir  is  allowed,  as
            well as -I dir.  This syntax is allowed for compatibility with the C preprocessor's -I flag.

       -j [jobs], --jobs[=jobs]
            Specifies the number of jobs (commands) to run simultaneously.  If there is more than one -j option, the
            last one is effective.  If the -j option is given without an argument, make will not limit the number of
            jobs that can run simultaneously. When make invokes a sub-make, all instances of make will coordinate to
            run the specified number of jobs at a time; see the section PARALLEL MAKE AND THE JOBSERVER for details.

       --jobserver-fds [R,W]
            Internal option make uses to pass the jobserver pipe read and write  file  descriptor  numbers  to  sub-
            makes; see the section PARALLEL MAKE AND THE JOBSERVER for details

       -k, --keep-going
            Continue as much as possible after an error.  While the target that failed, and those that depend on it,
            cannot be remade, the other dependencies of these targets can be processed all the same.

       -l [load], --load-average[=load]
            Specifies that no new jobs (commands) should be started if there are others jobs running  and  the  load
            average is at least load (a floating-point number).  With no argument, removes a previous load limit.

       -L, --check-symlink-times
            Use the latest mtime between symlinks and target.

       -n, --just-print, --dry-run, --recon
            Print the commands that would be executed, but do not execute them (except in certain circumstances).

       -o file, --old-file=file, --assume-old=file
            Do not remake the file file even if it is older than its dependencies, and do not remake anything on ac‐
            count of changes in file.  Essentially the file is treated as very old and its rules are ignored.

       -O[type], --output-sync[=type]
            When running multiple jobs in parallel with -j, ensure the output of  each  job  is  collected  together
            rather  than interspersed with output from other jobs.  If type is not specified or is target the output
            from the entire recipe for each target is grouped together.  If type is line the output from  each  com‐
            mand  line within a recipe is grouped together.  If type is recurse output from an entire recursive make
            is grouped together.  If type is none output synchronization is disabled.

       -p, --print-data-base
            Print the data base (rules and variable values) that results from reading the makefiles; then execute as
            usual  or  as otherwise specified.  This also prints the version information given by the -v switch (see
            below).  To print the data base without trying to remake any files, use make -p -f/dev/null.

       -q, --question
            ``Question mode''.  Do not run any commands, or print anything; just return an exit status that is  zero
            if the specified targets are already up to date, nonzero otherwise.

       -r, --no-builtin-rules
            Eliminate  use  of  the built-in implicit rules.  Also clear out the default list of suffixes for suffix
            rules.

       -R, --no-builtin-variables
            Don't define any built-in variables.

       -s, --silent, --quiet
            Silent operation; do not print the commands as they are executed.

       -S, --no-keep-going, --stop
            Cancel the effect of the -k option.  This is never necessary except in a recursive make where  -k  might
            be inherited from the top-level make via MAKEFLAGS or if you set -k in MAKEFLAGS in your environment.

       -t, --touch
            Touch files (mark them up to date without really changing them) instead of running their commands.  This
            is used to pretend that the commands were done, in order to fool future invocations of make.

       --trace
            Information about the disposition of each target is printed (why the target is being  rebuilt  and  what
            commands are run to rebuild it).

       -v, --version
            Print  the version of the make program plus a copyright, a list of authors and a notice that there is no
            warranty.

       -w, --print-directory
            Print a message containing the working directory before and after other processing.  This may be  useful
            for tracking down errors from complicated nests of recursive make commands.

       --no-print-directory
            Turn off -w, even if it was turned on implicitly.

       -W file, --what-if=file, --new-file=file, --assume-new=file
            Pretend  that  the  target file has just been modified.  When used with the -n flag, this shows you what
            would happen if you were to modify that file.  Without -n, it is almost the same as running a touch com‐
            mand  on  the  given  file before running make, except that the modification time is changed only in the
            imagination of make.

       --warn-undefined-variables
            Warn when an undefined variable is referenced.

EXIT STATUS
       GNU make exits with a status of zero if all makefiles were successfully parsed and no targets that were built
       failed.   A status of one will be returned if the -q flag was used and make determines that a target needs to
       be rebuilt.  A status of two will be returned if any errors were encountered.

SEE ALSO
       The full documentation for make is maintained as a Texinfo manual.  If the info and make programs  are  prop‐
       erly installed at your site, the command

              info make

       should  give  you  access  to  the  complete  manual.  Additionally,  the  manual is also available online at
       https://www.gnu.org/software/make/manual/html_node/index.html

PARALLEL MAKE AND THE JOBSERVER
       Using the -j option, the user can instruct make to execute tasks in parallel. By specifying a  numeric  argu‐
       ment to -j the user may specify an upper limit of the number of parallel tasks to be run.

       When  the  build  environment is such that a top level make invokes sub-makes (for instance, a style in which
       each sub-directory contains its own Makefile ), no individual instance of make knows how many tasks are  run‐
       ning in parallel, so keeping the number of tasks under the upper limit would be impossible without communica‐
       tion between all the make instances running. While solutions like having the top level make serve as  a  cen‐
       tral  controller are feasible, or using other synchronization mechanisms like shared memory or sockets can be
       created, the current implementation uses a simple shared pipe.

       This pipe is created by the top-level make process, and passed on to all the sub-makes.  The top level  make‐
       processwrites  N-1  one-byte tokens into the pipe (The top level make is assumed to reserve one token for it‐
       self). Whenever any of the make processes (including the top-level make ) needs to run a new task, it reads a
       byte  from  the  shared pipe. If there are no tokens left, it must wait for a token to be written back to the
       pipe. Once the task is completed, the make process writes a token back to the pipe (and thus, if  the  tokens
       had  been exhausted, unblocking the first make process that was waiting to read a token).  Since only N-1 to‐
       kens were written into the pipe, no more than N tasks can be running at any given time.

       If the job to be run is not a sub-make then make will close the jobserver pipe file descriptors before invok‐
       ing the commands, so that the command can not interfere with the jobserver, and the command does not find any
       unusual file descriptors.

BUGS
       See the chapter ``Problems and Bugs'' in The GNU Make Manual.

AUTHOR
       This manual page contributed by Dennis Morse of Stanford University.  Further  updates  contributed  by  Mike
       Frysinger.  It has been reworked by Roland McGrath.  Maintained by Paul Smith.

COPYRIGHT
       Copyright © 1992-1993, 1996-2016 Free Software Foundation, Inc.  This file is part of GNU make.

       GNU Make is free software; you can redistribute it and/or modify it under the terms of the GNU General Public
       License as published by the Free Software Foundation; either version 3 of the License, or  (at  your  option)
       any later version.

       GNU  Make  is  distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the im‐
       plied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  General  Public  License
       for more details.

       You  should  have  received  a  copy  of the GNU General Public License along with this program.  If not, see
       http://www.gnu.org/licenses/.

GNU                                               28 February 2016                                           MAKE(1)
pi@raspberrypi:~/Desktop $ 

demos

$ make -v

$ make -h

image

$ make -h

用法:make [选项] [目标] ...
选项:
  -b, -m                      为兼容性而忽略。
  -B, --always-make           无条件制作 (make) 所有目标。
  -C 目录, --directory=目录    在执行前先切换到 <目录>。
  -d                          打印大量调试信息。
  --debug[=旗标]               打印各种调试信息。
  -e, --environment-overrides
                              环境变量覆盖 makefile 中的变量。
  -E 字串, --eval=字串        将 <字串> 作为 makefile 语句估值。
  -f 文件, --file=文件, --makefile=文件
                              从 <文件> 中读入 makefile。
  -h, --help                  打印该消息并退出。
  -i, --ignore-errors         忽略来自命令配方的错误。
  -I 目录, --include-dir=目录  在 <目录> 中搜索被包含的 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
                              只打印命令配方,不实际执行。
  -o 文件, --old-file=文件, --assume-old=文件
                              将 <文件> 当做很旧,不必重新制作。
  -O[类型], --output-sync[=类型]
                           使用 <类型> 方式同步并行任务输出。
  -p, --print-data-base       打印 make 的内部数据库。
  -q, --question              不运行任何配方;退出状态说明是否已全部更新。
  -r, --no-builtin-rules      禁用内置隐含规则。
  -R, --no-builtin-variables  禁用内置变量设置。
  -s, --silent, --quiet       不输出配方命令。
  --no-silent                 对配方进行回显(禁用 --silent 模式)。
  -S, --no-keep-going, --stop
                              关闭 -k。
  -t, --touch                 touch 目标(更新修改时间)而不是重新制作它们。
  --trace                     打印跟踪信息。
  -v, --version               打印 make 的版本号并退出。
  -w, --print-directory       打印当前目录。
  --no-print-directory        关闭 -w,即使 -w 默认开启。
  -W 文件, --what-if=文件, --new-file=文件, --assume-new=文件
                              将 <文件> 当做最新。
  --warn-undefined-variables  当引用未定义变量的时候发出警告。

该程序为 aarch64-unknown-linux-gnu 编译
报告错误到 <bug-make@gnu.org>
pi@raspberrypi:~/Desktop $ 

(🐞 反爬虫测试!打击盗版⚠️)如果你看到这个信息, 说明这是一篇剽窃的文章,请访问 https://www.cnblogs.com/xgqfrms/ 查看原创文章!

WiringPi

$ gpio -v

$ gpio readall

https://www.cnblogs.com/xgqfrms/p/17365120.html#5173336

https://github.com/WiringPi/WiringPi

https://github.com/WiringPi/WiringPi-Python

cmake

https://www.cnblogs.com/xgqfrms/tag/cmake/

https://zzk.cnblogs.com/my/s/blogpost-p?Keywords=cmake

demo

https://vcpkg.io/en/getting-started.html

refs



©xgqfrms 2012-2021

www.cnblogs.com/xgqfrms 发布文章使用:只允许注册用户才可以访问!

原创文章,版权所有©️xgqfrms, 禁止转载 🈲️,侵权必究⚠️!


posted @ 2023-05-03 19:08  xgqfrms  阅读(18)  评论(1编辑  收藏  举报