您的位置:首页 > 其它

56种木马的清除方法!

2007-04-11 10:42 309 查看

Linux开发工具

--Makefile入门(上)

一、简介 1)make工具:利用make工具可以自动完成编译工作。这些工作包括:如果仅修改了某几个源文件,则只重新编译这几个源文件;如果某个头文件被修改了,则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作,避免不必要的重新编译。 2)makefile:make工具通过一个称为Makefile的文件来完成并自动维护编译工作。Makefile文件描述了整个工程的编译、连接等规则

二、Makefile基本规则 TARGET(target:目标)… :DEPENDENCIES(dependencies:依赖性,相关性)… COMMAND(command:命令,指挥) …

说明: 1)目标(TARGET):即最终想要产生的文件,如:可执行文件和目标文件等;目标也可以是要执行的动作,如clean,也称为伪目标。 2)依赖(DEPENDENCIES):为了产生目标文件而依赖的文件列表,一个目标通常依赖于多个文件。 3)命令(COMMAND):是make执行的动作(shell命令或是可在shell下执行的程序)。注意:每个命令行的起始字符必须为TAB字符!(但是在CSDN上因为排版的问题,无法正常显示出来。。。)如果DEPENDENCIES中有一个或多个文件更新的话,COMMAND就要执行,这就是Makefile最核心的内容

三、一个简单的Makefile示例 .PHONY:clean #声明伪目标 phony:假的,欺骗的;假冒者 main:main.oadd.o sub.o gcc-Wall -g main.o add.o sub.o -o main main.o:main.c gcc-Wall -g -c main.c -o main.o add.o:add.cadd.h gcc-Wall -g -c add.c -o add.o sub.o:sub.cadd.h gcc-Wall -g -c sub.c -o sub.o clean: rm-f main.o add.o sub.o

执行: 1)make #生成第一个目标 2)makeclean #“生成”clean伪目标 3)makemain.o #仅生成main.o目标 4)make-f Makefile #指定执行的文件名

四、Makefile自动化变量
选项名 作用
$@ 规则的目标文件名
$< 规则的第一个依赖文件名
$^ 规则的所有依赖文列表
示例:【文件名Makefile.01】 .PHONY:clean OBJECTS=main.oadd.o sub.o#定义变量 main:$(OBJECTS) gcc-Wall -g $^ -o main main.o:main.c gcc-Wall -g -c $< -o main.o add.o:add.cadd.h gcc-Wall -g -c $< -o add.o sub.o:sub.cadd.h gcc-Wall -g -c $< -o sub.o clean: rm-f main $(OBJECTS)

执行:make-f Makefile.01 附:如果一条语句在执行Makefile文件时,不想打印出来,则在其前面加上@符号

五、Make编译多个可执行文件 1、Make使用隐含推导 示例1: .PHONY:cleanall BIN=01test02test all:$(BIN) clean: rm-f $(BIN) 示例2: .PHONY:cleanall BIN=01test02test all:$(BIN) 01test:01test.o gcc-Wall -g $< -o $@ 02test:02test.o gcc-Wall -g $< -o $@ clean: rm-f $(BIN) *.o

2、模式规则 %.o:%.c 3、后缀规则 .c.o:

示例3: .PHONY:cleanall BIN=01test02test all:$(BIN) #%.o:%.c %.c.o: #与前一条命令作用相同 gcc-Wall -g -c $< -o $@ 01test:01test.o gcc-Wall -g $< -o $@ 02test:02test.o gcc-Wall -g $< -o $@ clean: rm-f $(BIN) *.o

六、综合运用实例 (1) .PHONY:cleanall CC=gcc CFLAGS=-Wall-g BIN=01test02test all:$(BIN) #%.o:%.c .c.o: $(CC)$(CFLAGS) -c $< -o $@ 01test:01test.o $(CC)$(CFLAGS) $< -o $@ 02test:02test.opub.o $(CC)$(CFLAGS) $< -o $@ clean: rm-f $(BIN) *.o

(2) .PHONY:cleanall CC=gcc CFLAGS=-Wall-g BIN=01test02test 03test STR=$(CC)$(CFLAGS) -c $< -o $@ STR2=$(CC)$(CFLAGS) $< -o $@ all:$(BIN) clean: rm-f $(BIN) *.o本文出自 “Boost” 博客,请务必保留此出处http://zhujifang.blog.51cto.com/8634872/1380171
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: