linux的makefile语法规则
㈠ linux makefile或命令前的@有什么意义
$@是Makfile里的一种自动化变量,代表目前规则中所有的目标的集合,在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合。
Makefile规则语法
targets : prerequisites
command
...
$@就是对应targets目标集合。
举个例子具体说明:
objects = t1.o t2.o
$(objects): %.o: %.c
$(CC) -c $(CFLAGS) $< -o $@
这里objects包含两个目标,t1.o和t2.o,$@就代表objects,也即{t1.o t2.o}这个目标集合。
㈡ WINDOW NMAKE的makefile规则与linux的makefile有多大差异
foreach 是一个很重要的函数,在wind下应该支持,$(PATH_SC)\$(arg)里面的\字符换下,windows和linux在路径上是很有区别蝗,你把\换成/ 或者 两个\即\\试下
$(PATH_SC)\$(arg)或者先把$(PATH_SC)\这部分去掉,看能不能从$(FILE_SR)里面读出数据
foreach 应该是支持的
㈢ windows和linux的makefile文件语法都一样的吗
关于 C 语言的多模块编译工具 make,其 makefile 文件中的语法规则都是一样的。但是必须要仔细写清楚编译中的先后关系、甚至一个标点符号都不能够缺少,否则的话,make 在编译 makefile 文件时就会发生错误。
㈣ linux下makefile的问题
Makefile里面有个all。这个是在make后面缺省的时候会调用all。而make后面加上wang.exe是需要在Makefile里面规定一个wang.exe的标签的,一边make wang.exe的时候能够找到入口。看不到你完全的Makefile无法做出更详细的回答
㈤ 关于linux的makefile
命令行必需以[Tab]键开始,以和Makefile其他行区别。
就是说所有的命令行必需以[Tab] 字符开始,但并不是所有的以[Tab]键出现行都是命令行。但make程序会把出现在第一条规则之后的所有以[Tab]字符开始的行都作为命令行来处理。
你下面的rm语法上没问题的,所以应该是[Tab]的问题。
㈥ linux的makefile问题
edit : main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
cc -o edit main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
这个意思是说把这些目标文件链接生成叫做edit的可执行文件。cc就是gcc编译器
㈦ linux里面的make和makefile是做什么的
1、make:是一个非常重要的编译命令,本质上它是一个程序。利用make工具,可以将大型的开发项目分解成为多个更易于管理的模块,对于一个包括几百个源文件的应用程序,使用make和makefile工具就可以简洁明快地理顺各个源文件之间纷繁复杂的相互关系。而且如此多的源文件,如果每次都要键入gcc命令进行编译的话,那对程序员来说简直就是一场灾难。而make工具则可自动完成编译工作,并且可以只对程序员在上次编译后修改过的部分进行编译。
2、Makefile文件 :Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作,本质上makefile文件是个文本文件,用于配置编译过程。makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。makefile 文件是许多编译器--包括 Windows NT 下的编译器--维护编译信息的常用方法,只是在集成开发环境中,用户通过友好的界面修改 makefile 文件而已。
3、在 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 makefile
prog : filea.o fileb.o filec.o
cc filea.o fileb.o filec.o -LS -o prog
filea.o : filea.c a.h defs
cc -c filea.c
fileb.o : fileb.c b.h defs
cc -c fileb.c
filec.o : filec.c c.h
cc -c filec.c
这个描述文档就是一个简单的makefile文件。
㈧ linux中Makefile中:=表示意思,解释一下,谢谢
makefile中:=是指引用,比如 KDIR:= /lib/moles/2.6.30/build,其中文件路径太长,用KDIR来表示,在后面的语句中就可以用$KDIR来代指/lib/moles/2.6.30/build;其实就是为了方便程序的书写。记着引用时要在前面加$。 就类似于C语言变量的概念。
㈨ 在linux下怎么makefile
Linux系统下makefile的作用把编写好的源文件进行编译与链接,makefile的基本格式如下:
target…
:prerequisite…
(Tab键)command
#格式解释
target:生成的目标文件,可以是可执行文件,也可以是中间目标文件
prerequisite:生成target所需要的文件
command:make需要的执行命令,一般是编译与链接的命令,命令前面必须要有Tab键才能有效果
makefile的简单例子(用的Ubuntu11.10):
gcc–chello.c:编译command目录下的hello.c源文件,编译之后会生成hello.o中间文件。
rm:删除command目录下的hello.o与exe.out文件
./exe.out:输出exe.out可执行文件,hello.c中写的是HelloWorld!
make:make命令与makeexe命令执行的效果是一样的。
㈩ 如何在linux下写makefile
Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。
make命令的选项与参数
然后就完了。