Linux make命令详解

Linux/Unix环境下的make命令详解无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令。

不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install。

利用make工具,我们可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。

而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。

而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。

因此,有效的利用make和makefile工具可以大大提高项目开发的效率。

同时掌握make和makefile之后,您也不会再面对着Linux下的应用软件手足无措了。

但令人遗憾的是,在许多讲述Linux应用的书籍上都没有详细介绍这个功能强大但又非常复杂的编译工具。

在这里我就向大家详细介绍一下make及其描述文件makefile。

Makefile文件Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。

而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。

makefile 文件是许多编译器--包括Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改makefile 文件而已。

在UNIX 系统中,习惯使用Makefile 作为makfile 文件。

如果要使用其他文件作为makefile,则可利用类似下面的make 命令选项指定makefile 文件:$ make -f Makefile.debug例如,一个名为prog的程序由三个C源文件filea.c、fileb.c和filec.c以及库文件LS编译生成,这三个文件还分别包含自己的头文件a.h 、b.h和c.h。

通常情况下,C编译器将会输出三个目标文件filea.o、fileb.o和filec.o。

假设filea.c和fileb.c都要声明用到一个名为defs的文件,但filec.c不用。

即在filea.c和fileb.c里都有这样的声明:#include "defs"那么下面的文档就描述了这些文件之间的相互联系:#It is a example for describing makefileprog : filea.o fileb.o filec.occ filea.o fileb.o filec.o -LS -o progfilea.o : filea.c a.h defscc -c filea.cfileb.o : fileb.c b.h defscc -c fileb.cfilec.o : filec.c c.hcc -c filec.c这个描述文档就是一个简单的makefile文件。

从上面的例子注意到,第一个字符为# 的行为注释行。

第一个非注释行指定prog 由三个目标文件filea.o、fileb.o和filec.o链接生成。

第三行描述了如何从prog所依赖的文件建立可执行文件。

接下来的4、6、8行分别指定三个目标文件,以及它们所依赖的.c 和.h文件以及defs文件。

而5、7、9行则指定了如何从目标所依赖的文件建立目标。

当filea.c或a.h文件在编译之后又被修改,则make 工具可自动重新编译filea.o,如果在前后两次编译之间,filea.C 和a.h 均没有被修改,而且test.o 还存在的话,就没有必要重新编译。

这种依赖关系在多源文件的程序编译中尤其重要。

通过这种依赖关系的定义,make 工具可避免许多不必要的编译工作。

当然,利用Shell 脚本也可以达到自动编译的效果,但是,Shell 脚本将全部编译任何源文件,包括哪些不必要重新编译的源文件,而make 工具则可根据目标上一次编译的时间和目标所依赖的源文件的更新时间而自动判断应当编译哪个源文件。

Makefile文件作为一种描述文档一般需要包含以下内容:◆宏定义◆源文件之间的相互依赖关系◆可执行的命令Makefile中允许使用简单的宏指代源文件及其相关编译信息,在Linux中也称宏为变量。

在引用宏时只需在变量前加$符号,但值得注意的是,如果变量名的长度超过一个字符,在引用时就必须加圆括号()。

下面都是有效的宏引用:$(CFLAGS)$2$Z$(Z)其中最后两个引用是完全一致的。

需要注意的是一些宏的预定义变量,在Unix系统中,$*、$@、$?和$<四个特殊宏的值在执行命令的过程中会发生相应的变化,而在GNU make中则定义了更多的预定义变量。

关于预定义变量的详细内容,宏定义的使用可以使我们脱离那些冗长乏味的编译选项,为编写makefile文件带来很大的方便。

# Define a macro for the object filesOBJECTS= filea.o fileb.o filec.o# Define a macro for the library fileLIBES= -LS# use macros rewrite makefileprog: $(OBJECTS)cc $(OBJECTS) $(LIBES) -o prog……此时如果执行不带参数的make命令,将连接三个目标文件和库文件LS;但是如果在make命令后带有新的宏定义:make "LIBES= -LL -LS"则命令行后面的宏定义将覆盖makefile文件中的宏定义。

若LL也是库文件,此时make命令将连接三个目标文件以及两个库文件LS和LL。

在Unix系统中没有对常量NULL作出明确的定义,因此我们要定义NULL字符串时要使用下述宏定义:STRINGNAME=Make命令在make命令后不仅可以出现宏定义,还可以跟其他命令行参数,这些参数指定了需要编译的目标文件。

其标准形式为:target1 [target2 …]:[:][dependent1 …][;commands][#…][(tab) commands][#…]方括号中间的部分表示可选项。

Targets和dependents当中可以包含字符、数字、句点和"/"符号。

除了引用,commands中不能含有"#",也不允许换行。

在通常的情况下命令行参数中只含有一个":",此时command序列通常和makefile 文件中某些定义文件间依赖关系的描述行有关。

如果与目标相关连的那些描述行指定了相关的command序列,那么就执行这些相关的command命令,即使在分号和(tab)后面的aommand字段甚至有可能是NULL。

如果那些与目标相关连的行没有指定command,那么将调用系统默认的目标文件生成规则。

如果命令行参数中含有两个冒号"::",则此时的command序列也许会和makefile中所有描述文件依赖关系的行有关。

此时将执行那些与目标相关连的描述行所指向的相关命令。

同时还将执行build-in规则。

如果在执行command命令时返回了一个非"0"的出错信号,例如makefile文件中出现了错误的目标文件名或者出现了以连字符打头的命令字符串,make操作一般会就此终止,但如果make后带有"-i"参数,则make将忽略此类出错信号。

Make命本身可带有四种参数:标志、宏定义、描述文件名和目标文件名。

其标准形式为:Make [flags] [macro definitions] [targets]Unix系统下标志位flags选项及其含义为:-f file指定file文件为描述文件,如果file参数为"-"符,那么描述文件指向标准输入。

如果没有"-f"参数,则系统将默认当前目录下名为makefile或者名为Makefile的文件为描述文件。

在Linux中,GNU make 工具在当前工作目录中按照GNUmakefile、makefile、Makefile的顺序搜索makefile文件。

-i 忽略命令执行返回的出错信息。

-s 沉默模式,在执行之前不输出相应的命令行信息。

-r 禁止使用build-in规则。

-n 非执行模式,输出所有执行命令,但并不执行。

-t 更新目标文件。

-q make操作将根据目标文件是否已经更新返回"0"或非"0"的状态信息。

-p输出所有宏定义和目标文件描述。

-d Debug模式,输出有关文件和检测时间的详细信息。

Linux下make标志位的常用选项与Unix系统中稍有不同,下面我们只列出了不同部分:-c dir在读取makefile 之前改变到指定的目录dir。

-I dir 当包含其他makefile文件时,利用该选项指定搜索目录。

-h help文挡,显示所有的make选项。

-w 在处理makefile 之前和之后,都显示工作目录。

通过命令行参数中的target ,可指定make要编译的目标,并且允许同时定义编译多个目标,操作时按照从左向右的顺序依次编译target选项中指定的目标文件。

如果命令行中没有指定目标,则系统默认target指向描述文件中第一个目标文件。

通常,makefile 中还定义有clean 目标,可用来清除编译过程中的中间文件,例如:clean:rm -f *.o运行make clean 时,将执行rm -f *.o 命令,最终删除所有编译过程中产生的所有中间文件。

隐含规则在make 工具中包含有一些内置的或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。

Unix系统通常支持一种基于文件扩展名即文件名后缀的隐含规则。

这种后缀规则定义了如何将一个具有特定文件名后缀的文件(例如.c文件),转换成为具有另一种文件名后缀的文件(例如.o文件):.c:.o$(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<系统中默认的常用文件扩展名及其含义为:.o 目标文件.c C源文件.f FORTRAN源文件.s 汇编源文件.y Yacc-C源语法.l Lex源语法在早期的Unix系统系统中还支持Yacc-C源语法和Lex源语法。

在编译过程中,系统会首先在makefile文件中寻找与目标文件相关的.C文件,如果还有与之相依赖的.y 和.l文件,则首先将其转换为.c文件后再编译生成相应的.o文件;如果没有与目标相关的.c文件而只有相关的.y文件,则系统将直接编译.y文件。

合集下载

linux中的make命令的详细解释

linux中的make命令的详细解释

linux中的make命令的详细解释linxu下的make命令是一个GNU下的工程化编译工具。

下面由店铺为大家整理了linux的make命令的详细解释的相关知识,希望对大家有帮助!一、linux中的make命令的详细解释make命令是GNU的工程化编译工具,用于编译众多相互关联的源代码问价,以实现工程化的管理,提高开发效率。

语法make(选项)(参数)选项-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中的make命令详解实例1. 一个简单的例子为了编译整个工程,你可以简单的使用 make 或者在 make 命令后带上目标 all。

$ makegcc -c -Wall test.cgcc -c -Wall anotherTest.cgcc -Wall test.o anotherTest.o -o test你能看到 make 命令第一次创建的依赖以及实际的目标。

如果你再次查看目录内容,里面多了一些 .o 文件和执行文件:$ lsanotherTest.c anotherTest.o Makefile test test.c test.h test.o 现在,假设你对 test.c 文件做了一些修改,重新使用 make 编译工程:$ makegcc -c -Wall test.cgcc -Wall test.o anotherTest.o -o test你可以看到只有 test.o 重新编译了,然而另一个 Test.o 没有重新编译。

Linux命令详解(三).configure、make、makeinstall命令

Linux命令详解(三).configure、make、makeinstall命令

Linux命令详解(三).configure、make、makeinstall命令这些都是典型的使⽤GNU的AUTOCONF和AUTOMAKE产⽣的程序的安装步骤⼀、基本信息 1、./configure 是⽤来检测你的安装平台的⽬标特征的。

⽐如它会检测你是不是有CC或GCC,并不是需要CC或GCC,它是个shell脚本。

2、make 是⽤来编译的,它从Makefile中读取指令,然后编译。

3、make install是⽤来安装的,它也从Makefile中读取指令,安装到指定的位置。

注意:AUTOMAKE和AUTOCONF是⾮常有⽤的⽤来发布C程序的东西。

⼆、详细解释 1、configure命令 这⼀步⼀般⽤来⽣成 Makefile,为下⼀步的编译做准备,你可以通过在 configure 后加上参数来对安装进⾏控制,⽐如代码:./configure –prefix=/usr 意思是将该软件安装在 /usr 下⾯,执⾏⽂件就会安装在 /usr/bin (⽽不是默认的 /usr/local/bin),资源⽂件就会安装在/usr/share(⽽不是默认的/usr/local/share)。

同时⼀些软件的配置⽂件你可以通过指定 –sys-config= 参数进⾏设定。

有⼀些软件还可以加上–with、–enable、–without、–disable 等等参数对编译加以控制,你可以通过允许 ./configure –help 察看详细的说明帮助。

2、make 这⼀步就是编译,⼤多数的源代码包都经过这⼀步进⾏编译(当然有些perl或python编写的软件需要调⽤perl或python来进⾏编译)。

如果在 make 过程中出现 error ,你就要记下错误代码(注意不仅仅是最后⼀⾏),然后你可以向开发者提交 bugreport(⼀般在 INSTALL ⾥有提交地址),或者你的系统少了⼀些依赖库等,这些需要⾃⼰仔细研究错误代码。

linux cmake命令用法

linux cmake命令用法

CMake是一个跨平台的自动化构建系统,它用于控制编译和构建过程,使得源代码能够在多种操作系统和编译器上进行编译。

在Linux系统中,CMake命令的用法与其他平台上的用法相似。

以下是CMake命令在Linux系统中的一些常见用法:
创建构建目录并进入该目录:
bash
mkdir build
cd build
运行CMake生成构建系统文件:
shell
cmake ..
这将根据上级目录中的CMakeLists.txt文件生成构建系统文件。

编译源代码:
go
make
这将使用默认的构建工具(通常是GNU Make)编译源代码。

你可以使用其他构建工具,如Ninja,通过指定-G选项来选择:
go
cmake -G Ninja ..
ninja
安装目标文件(可选):
如果在CMakeLists.txt文件中定义了安装目标,可以使用以下命令来安装:
go
make install
或者,如果使用Ninja构建工具,可以运行:
go
ninja install
清理构建文件:
要清理构建过程中生成的文件,可以运行:
go
make clean
或者,如果使用Ninja构建工具,可以运行:
go
ninja clean
这只是CMake命令在Linux系统中的一些基本用法。

实际上,CMake提供了丰富的功能和选项,可以根据项目需求进行灵活配置和扩展。

你可以通过运行cmake --help命令来获取更多关于CMake选项和用法的帮助信息。

linux make的命令行参数

linux make的命令行参数

linux make的命令行参数Linux make是一个非常重要的工具,用来自动构建项目和生成软件。

make命令行参数可以用来指定构建目标、编译器选项、目标平台等参数。

以下是常见的Linux make命令行参数:1. -f:指定目标文件名。

例如make -f makefile表示使用makefile文件构建项目。

2. -j:指定并行构建的进程数。

例如make -j4表示使用4个进程并行构建。

3. -C:指定目标目录。

例如make -C /usr/src/kernel表示在/usr/src/kernel目录下构建项目。

4. -k:表示忽略错误,继续构建。

例如make -k表示继续构建即使出现错误。

5. -n:表示模拟构建,不实际执行构建。

例如make -n表示打印出构建过程但不实际构建。

6. -B或--always-make:表示强制重新构建。

例如make -B表示强制重新构建所有目标文件。

7. -r或--no-builtin-rules:表示禁用内置规则。

例如make -r表示禁用内置规则,只使用自定义规则。

8. -s或--silent或--quiet:表示禁止输出构建详细信息。

例如make -s表示禁止输出构建详细信息。

9. -v或--version:表示显示make版本信息。

例如make -v表示显示make版本信息。

10. -h或--help:表示显示make命令的帮助信息。

例如make -h表示显示make命令的帮助信息。

以上命令是常见的make命令行参数,可以根据实际需求选择使用。

Linux之make的用法讲解

Linux之make的用法讲解

Linux之make的⽤法讲解在 Linux环境下使⽤ GNU 的 make⼯具能够⽐较容易的构建⼀个属于你⾃⼰的⼯程,整个⼯程的编译只需要⼀个命令就可以完成编译、连接以⾄于最后的执⾏。

不过这需要我们投⼊⼀些时间去完成⼀个或者多个称之为 Makefile ⽂件的编写。

此⽂件正是 make 正常⼯作的基础。

make 是⼀个命令⼯具,它解释 Makefile 中的指令(应该说是规则)。

在 Makefile⽂件中描述了整个⼯程所有⽂件的编译顺序、编译规则。

准备知识:编译,链接,静态库,共享库编译:把⾼级语⾔所书写的代码转换成机器可识别的指令,此时还不能够被执⾏,编译器通过检查⾼级语⾔的语法,函数和变量的声明是否正确!如果正确则产⽣中间⽬标⽂件(⽬标⽂件在Liunx中默认后缀为“.o”)链接:将多.o ⽂件,或者.o ⽂件和库⽂件链接成为可被操作系统执⾏的可执⾏程序静态库:⼜称为⽂档⽂件(Archive File)。

它是多个.o⽂件的集合。

Linux中静态库⽂件的后缀为“.a”共享库:也是多个.o ⽂件的集合,但是这些.o ⽂件时有编译器按照⼀种特殊的⽅式⽣成(共享库已经具备了可执⾏条件)在执⾏ make 之前,需要⼀个命名为 Makefile 的特殊⽂件(本⽂的后续将使⽤Makefile 作为这个特殊⽂件的⽂件名)来告诉 make 需要做什么(完成什么任务),该怎么做。

当使⽤make ⼯具进⾏编译时,⼯程中以下⼏种⽂件在执⾏make 时将会被编译(重新编译):1.所有的源⽂件没有被编译过,则对各个 C 源⽂件进⾏编译并进⾏链接,⽣成最后的可执⾏程序;2.每⼀个在上次执⾏ make 之后修改过的 C 源代码⽂件在本次执⾏make 时将会被重新编译;3.头⽂件在上⼀次执⾏make 之后被修改。

则所有包含此头⽂件的 C 源⽂件在本次执make 时将会被重新编译。

Makefile规则介绍⼀个简单的 Makefile 描述规则组成:TARGET... : PREREQUISITES...COMMAND......target:规则的⽬标。

linuxmake命令安装详解

linuxmake命令安装详解

linuxmake命令安装详解linux make命令安装详解对于GNU Make或许很多Windows开发的程序员并不是很了解,因为Windows中的很多集成开发环境(IDE)都帮我们做了这件事。

但是作为⼀个专业从事Linux嵌⼊式开发的程序员就必须要了解GNU Make,会不会使⽤GNU Make从⼀定⾓度上反应了⼀个⼈是否具备⼤型⼯程能⼒。

⼀、什么是GNU MakeGNU Make是⼀个控制从程序的源⽂件中⽣成程序的可执⾏⽂件和其他⾮源⽂件的⼯具。

Make可以从⼀个名为Makefile的⽂件中获得如何构建程序的知识,该⽂件列出了每个⾮源⽂件以及如何从其他⽂件计算它。

当你编写⼀个程序时,你应该为它编写⼀个Makefile⽂件,这样就可以使⽤Make来编译和安装这个程序。

⼆、如何获取MakeMake可以在GNU的主要FTP服务器上找到:http : (通过HTTP)和 (通过FTP)。

它也可以在GNU镜像列表上找到; 请尽可能GNU的镜像列表。

三、为什么需要Make任何⼀种技能或知识都是源之于某种社会需求,那为什么要⽤Make呢?当项⽬源⽂件很少的时候,我们也许还可以⼿动使⽤gcc命令来进⾏编译,但是当项⽬发展到⼀个庞⼤的规模时,再⼿动敲gcc命令去编译就变得不可能的事情。

所以呢,在这样的历史背景下,就出现了⼀位⼤⽜(斯图亚特·费尔德曼),在1977年贝尔实验室制作了这样⼀个软件,它的名字就叫做Make。

所以实际开发中,我们在编译⼤型项⽬的时候往往会使⽤Make进⾏编译,为此我们还需要了解Make软件所依赖的Makefile规则⽂件。

四、MakefileMakefile ⽂件需要按照某种语法进⾏编写,⽂件中需要说明如何编译各个源⽂件并连接⽣成可执⾏⽂件,并要求定义源⽂件之间的依赖关系。

Makefile的语法还是略微有些复杂,因篇幅有限,本⽂只能简述Makefile的编写原则。

(1)Makefile的组成部分Makefile包含五个东西:显⽰规则,隐式规则,变量定义,⽂件指⽰,注释。

linux的make命令

linux的make命令推荐文章linux的make命令使用方法常用选项有哪些热度:linux中的make命令的详细解释热度:linux中的make命令热度:linux编译命令之make命令热度:linux尝试登录失败后锁定用户账户方法是什么热度:Linux系统下编译时利用make命令可以很好地减少不必要的编译工作,提高效率,下面由店铺为大家整理了linux的make命令的相关知识,希望大家喜欢!linux的make命令详解1.功能说明make命令的关键是找出上一次各个文件的修改时间,利用此修改时间来比较相依赖文件最后一次修改的时间。

若目标文件的修改时间早于其相依文件的修改时间,则必须先对相依文件进行处理(编译),进而来更新目标文件,若目标文件的修改时间迟于其相依文件的修改时间,则不对该相依文件进行处理(编译)。

利用它可以每次只编译自上次编译后发生变化的文件,从而可以减少一些不必要的编译工作,提高效率。

执行make命令所需要的信息:(1)用户定义的描述文件,一般为makefile(2)文件系统有关的数据和与时间有关的信息(3)一组后缀规则2.makefile文件Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。

而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。

Makefile文件作为一种描述文档一般需要包含以下内容:(1) 宏定义(2) 源文件之间的相互依赖关系(3) 在依赖关系基础上的可执行的命令序列3.make命令make命令的一般格式:make【选项】【make描述文件】【宏定义】【目的文件】make首先分析所有的宏定义参数(带嵌入等号的参数)并进行赋值,宏命令行覆盖在makefile中进行的定义,然后检验选项标志,最后递归的对每一个目的依赖文件进行检查。

linuxmake的命令行参数

linuxmake的命令行参数Linux下的make命令是一个常用的构建工具,用于自动化编译和构建软件项目。

它可以根据源代码和构建规则自动检测文件的修改并重新编译,从而大大提高软件开发的效率。

make命令的命令行参数非常丰富,下面是一些常用的参数及其功能。

1. `-f` 或 `--file`:指定makefile文件的位置和名称。

2. `-j` 或 `--jobs`:指定并行执行的任务数。

例如,`make -j4`表示使用4个并行任务来编译。

3. `-k` 或 `--keep-going`:在一些任务失败后继续执行后续任务,而不会停止整个构建过程。

4. `-n` 或 `--just-print`:只打印make会执行的命令,而不实际执行。

5. `-s` 或 `--silent`:静默模式,不输出执行过程中的详细信息。

6. `-w` 或 `--print-directory`:打印执行规则的目录。

7. `-B` 或 `--always-make`:无条件地重新执行所有的目标。

8. `-C` 或 `--directory`:指定makefile所在的工作目录。

9. `-e` 或 `--environment-overrides`:允许环境变量覆盖makefile中的变量。

10. `-h` 或 `--help`:显示帮助信息。

11. `-i` 或 `--ignore-errors`:忽略命令执行中的错误。

12. `-k` 或 `--keep-going`:继续执行即使一些目标失败。

14. `-O` 或 `--output-sync`:输出时保持规则的完整性以保持同步。

15. `-P` 或 `--no-print-directory`:不打印执行规则的目录。

16. `-q` 或 `--question`:检查指定的目标是否需要重新编译,不进行实际编译。

17. `-r` 或 `--no-builtin-rules`:禁用make内置的规则。

linux中make的用法

linux中make的用法
make是一个常用的Linux工具,主要用于自动化编译和链接程序。

在使用make之前,需要先编写Makefile文件,Makefile文件是一个文本文件,用于定义程序的编译规则和依赖关系。

Makefile 文件通常包含了以下几个部分:
1. 定义变量:可以定义一些变量,用于存储文件路径、编译器选项等信息。

2. 定义目标:每个目标对应一个编译规则,需要指定目标文件、依赖文件和编译命令。

3. 定义伪目标:伪目标不对应实际文件,用于执行一些特殊的操作,比如清除中间文件、生成文档等。

4. 定义变量操作:可以使用一些内置的函数对变量进行操作,比如替换字符串、添加后缀等。

使用make命令时,可以指定需要编译的目标,如果不指定则默认编译第一个目标。

make会自动分析依赖关系,只编译需要重新编译的文件,从而提高编译效率。

make支持一些常用的参数,比如-n表示只显示需要执行的命令而不实际执行,-j表示并行编译,-k表示继续执行其他目标即使某个目标编译失败。

总的来说,make是一个非常强大的工具,可以自动化编译和链接程序,大大简化了编译过程。

对于Linux开发者而言,掌握make 的用法是非常重要的。

Linuxmake命令详解

“—debug[=<options>]” 输出make的调试信息。它有几种不同的级别可供选择,如果没有参数,那就是输出最简单的调试信息。下面是<options>的取值:
a —— 也就是all,输出所有的调试信息。(会非常的多) b —— 也就是basic,只输出简单的调试信息。即输出不需要重编译的目标。 v —— 也就是verbose,在b选项的级别之上。输出的信息包括哪个makefile被解析,不需要被重编译的依赖文件(或是依赖目标)等。 i —— 也就是implicit,输出所以的隐含规则。 j —— 也就是jobs,输出执行规则中命令的详细信息,如命令的PID、返回码等。 m —— 也就是makefile,输出make读取makefile,更新makefile,执行makefile的信息。
“-i” “--ignore-errors” 在执行时忽略所有的错误。
“-I <dir>” “--include-dir=<dir>” 指定一个被包含makefile的搜索目标。可以使用多个“-I”参数来指定多个目录。
“-j [<jobsnum>]” “--jobs[=<jobsnum>]” 指同时运行命令的个数。如果-j后没有这个jobsnum参数,make运行命令时能运行多少就运行多少。如果有一个以上的“-j”参数,那么仅最后 一个“-j”才是有效的。(注意这个参数在MS-DOS中是无用的)
“--no-print-directory” 禁止“-w”选项。
“-W <file>” “--what-if=<file>” “--new-file=<file>” “--assume-file=<file>” 假定目标<file>需要更新,如果和“-n”选项使用,那么这个参数会输出该目标更新时的运行动作。如果没有“-n”那么就像运行UNIX的“touch”命 令一样,使得<file>的修改时间为当前时间。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档