读书人

shell编程中=和= 的区别,该如何解决

发布时间: 2012-04-14 17:14:21 作者: rapoo

shell编程中,:=和= 的区别
我编译模块,网上写的makefile如下:
ifeq ($(KERNELRELEASE),)
KERNELDIR ?= /home/linux/linux-2.6.22.6
PWD := $(shell pwd)
modules:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules
modules_install:
$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

shell的,但是我在ubuntu下,都是 PWD = $(shell pwd)
也能正常使用的,所以搞不清,
:=和= 的区别

[解决办法]
摘自 Makefile 中:= ?= += =的区别 - wanqi - 博客园


1、“=”

make会将整个makefile展开后,再决定变量的值。也就是说,变量的值将会是整个makefile中最后被指定的值。看例子:

x = foo
y = $(x) bar
x = xyz

在上例中,y的值将会是 xyz bar ,而不是 foo bar 。

2、“:=”

“:=”表示变量的值决定于它在makefile中的位置,而不是整个makefile展开后的最终值。

x := foo
y := $(x) bar
x := xyz

在上例中,y的值将会是 foo bar ,而不是 xyz bar 了。

读书人网 >UNIXLINUX

热点推荐