游客:
注册
|
登录
|
帮助
Linux伊甸园论坛
»
C/C++ (STL/boost)
» 请教:Makefile的执行顺序问题
IBM 集群技术资源全面接触
‹‹ 上一主题
|
下一主题 ››
投票
交易
悬赏
活动
打印
|
推荐
|
订阅
|
收藏
标题: 请教:Makefile的执行顺序问题
飞雪横天
新生入学
注册用户
UID 119573
精华 0
积分 0(
积分有什么用?
)
帖子 3
阅读权限 10
注册 2005-4-28
状态 离线
#1
使用道具
发表于 2007-11-1 10:04
资料
个人空间
短消息
加为好友
请教:Makefile的执行顺序问题
我对Makefile的机制不熟悉, 今天碰到一个奇怪的现象:
5r]L}Q4]8N&Cwww.linuxeden.com
写个简单的Makefile文件描述如下:
[Copy to clipboard]
[
-
]
CODE:
.PHONE: all
all:
@echo "Creating so files"
-@rm -rf demo
-@mkdir demo
-@cp -rf /usr/lib/libX*.so demo
-@for i in $(shell find ./demo -name libX*.so); do echo $$i; done
假设我的/usr/lib目录下有以下文件: libX11.a,libX11.so,libX11.so.6,libX11.so.6.2
www.linuxeden.com$Ca5Tp's
hD{I
h6fy)}www.linuxeden.com
按道理说, 应该打印出类似于下面的结果:
-IH!i$g
b#A
Create so files
I(e5\s+Vkr
libX11.so
E(nmJL[H
f
*aM9K]b5I;YY$E7q~
p
但是实际上打印出来的是:
Z\I$f1E"nwww.linuxeden.com
find: ./demo: No such file or directory
Linux伊甸园论坛:VzcD*MoOkJ
Creating so files
)L9rL:m&|D
从表面上看来, 应该是-@for循环与-@mkdir同时执行才造成这种情况, 难道Makefile
3h1G{~2p&vIMF9P
不是单步执行的么? 如果是同时fork的话, 该如何禁止这种情况发生呢?
www.linuxeden.comv^;}s1N*C8{
Linux伊甸园论坛5U,y-L"MT)Ili
谢谢大家了.
Y"dv\5V
q/ab
;a`]cM5t9ig1}
[
本帖最后由 飞雪横天 于 2007-11-1 11:48 编辑
]
不容错过的IBM 集群技术资源汇总
flag
版主
版主
UID 19801
精华
1
积分 28(
积分有什么用?
)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
#2
使用道具
发表于 2007-11-1 10:23
资料
个人空间
短消息
加为好友
肯定是单步执行的,问题是执行命令都会有时延,特别是文件操作,而且find是出错信息先输出也是正常的。
0d{@;Iz0`!K6a
不过这里
www.linuxeden.com&Vw#x/e([a`
-@for i in
$(shell find ./demo -name libX*.so)
; do echo $$i; done
AD$q[L0]5F
改成-@for i in
·find ./demo -name libX*.so·
; do echo $$i; done
;g(zG6kE!NT
似乎就可以避免了,应该是这个in $()导致find先被解释了吧。。。。。
:l ZL4`n5u hxwww.linuxeden.com
Linux伊甸园论坛
S9EwBU$O/E$MB2g6y
[
本帖最后由 flag 于 2007-11-1 10:34 编辑
]
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
不容错过的IBM 集群技术资源汇总
飞雪横天
新生入学
注册用户
UID 119573
精华 0
积分 0(
积分有什么用?
)
帖子 3
阅读权限 10
注册 2005-4-28
状态 离线
#3
使用道具
发表于 2007-11-1 16:30
资料
个人空间
短消息
加为好友
谢谢版主, 修改之后makefile的解释的确正确了.
D4jbvZ-g;a/X-`co
但是却打印出"find ./demo -name libX*.so"这条语句了, 我不管怎么修改还是出现这句话, 不知如何处理?