首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

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

2012-04-14 
shell编程中,:和 的区别我编译模块,网上写的makefile如下:ifeq ($(KERNELRELEASE),)KERNELDIR ? /home/

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 了。

热点排行