标题: 请教:Makefile的执行顺序问题
飞雪横天
新生入学
Rank: 1
注册用户



UID 119573
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2005-4-28
状态 离线
发表于 2007-11-1 10:04  资料  个人空间  短消息  加为好友 
请教:Makefile的执行顺序问题

我对Makefile的机制不熟悉, 今天碰到一个奇怪的现象:
9Q]t6i} xzIgFN写个简单的Makefile文件描述如下:

.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.23YQ?S/PL8E9@+Ug?
www.linuxeden.com{1Z
p i*rA        XY)ag&`

按道理说, 应该打印出类似于下面的结果:
v z&]3IT2gCreate so files
-Y&[sI!J+glibX11.soU k!X#OWy        hb^
7\`(Ee
PV&H

但是实际上打印出来的是:wt+oW^Yn
find: ./demo: No such file or directory
`,sF5e
lj
?
Creating so filesLinux伊甸园论坛9J        pV9[;x3k
m
H

从表面上看来, 应该是-@for循环与-@mkdir同时执行才造成这种情况, 难道Makefile
S
K*FX5c~g+b$Iwww.linuxeden.com
不是单步执行的么? 如果是同时fork的话, 该如何禁止这种情况发生呢?
!ch0[m1_"X
*JG2J{5L&\;e5`"`谢谢大家了.
%W7xj
y5~At
]'t-m:zq!D
[ 本帖最后由 飞雪横天 于 2007-11-1 11:48 编辑 ]

顶部
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-11-1 10:23  资料  个人空间  短消息  加为好友 
肯定是单步执行的,问题是执行命令都会有时延,特别是文件操作,而且find是出错信息先输出也是正常的。"es
Pz*@3A)?$O7X
e

不过这里www.linuxeden.com,P4`;Y?b5s+~k1uw
    -@for i in $(shell find ./demo -name libX*.so); do echo $$i; done
.lK4v(q#|www.linuxeden.com改成-@for i in ·find ./demo -name libX*.so·; do echo $$i; doneD7aa+|0H2i
似乎就可以避免了,应该是这个in $()导致find先被解释了吧。。。。。Linux伊甸园论坛;UvC.lEuv'cC5h
www.linuxeden.comf+u-l`1M.f)E
[ 本帖最后由 flag 于 2007-11-1 10:34 编辑 ]





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
飞雪横天
新生入学
Rank: 1
注册用户



UID 119573
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2005-4-28
状态 离线
发表于 2007-11-1 16:30  资料  个人空间  短消息  加为好友 
谢谢版主, 修改之后makefile的解释的确正确了.)__EdO'f
但是却打印出"find ./demo -name libX*.so"这条语句了, 我不管怎么修改还是出现这句话, 不知如何处理?+T!a"L-K"F F3a-K*D/@
单步执行, 难道不是等上一步执行完成之后才执行下一句么? 这是否和Makefile的执行机制有关呢?C0o4c?Q$y&f

s&LxUwY Y/l
r        zLinux伊甸园论坛
我今天登陆了一天论坛, 在windows下老是提示验证码错误, 怎么回事呢?  在linu**沼诘锹缴侠戳?.
|
J%JEr"d C3X
Z/|
3wc^U+M
谢谢

顶部
不容错过的IBM 集群技术资源汇总
flag
版主
Rank: 7Rank: 7Rank: 7
版主



UID 19801
精华 1
积分 28(积分有什么用?)
帖子 5581
阅读权限 100
注册 2002-7-19
状态 离线
发表于 2007-11-1 21:35  资料  个人空间  短消息  加为好友 
打印出?我这里没有,不知道你是什么系统,我的是Redhat 9





上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。
顶部
飞雪横天
新生入学
Rank: 1
注册用户



UID 119573
精华 0
积分 0(积分有什么用?)
帖子 3
阅读权限 10
注册 2005-4-28
状态 离线
发表于 2007-11-2 09:43  资料  个人空间  短消息  加为好友 
.PHONE: allD2j
LM        A&J&uyzx


_ ^zf:U'Mt&XLinux伊甸园论坛all:
(smIQHm$E
^
        @echo "Creating so files"#UV\-E
[`%Y3eB-p7c(i

        -@rm -rf demo
^O
e#A{5Z&tE$`Linux伊甸园论坛
        -@mkdir demo3X(}J!?P'a9SP
        -@cp -rf /usr/lib/libX*.so demoLinux伊甸园论坛2A+x!P
OqKV

        -@for i in 'find ./demo -name libX*.so'; do echo $$i; done
7IFA4i"H9[www.linuxeden.comLinux伊甸园论坛kg^8L|'?
i have run this makefile in redhat9, but also get the same result:
{9ye*qW'@!~,WCreating so filesK        M3cl9Z/p3Q
find ./demo -name libX*.so(yZP
C w


;K3dFr'EQ~U.Nn5FYwhy? Is your makefile the same as mine?0cSk:XVuz(Gi.C
Linux伊甸园论坛        _J1RcbYG
thanks

顶部
不容错过的IBM 集群技术资源汇总
 



当前时区 GMT+8, 现在时间是 2008-5-17 03:48

    Powered by Discuz! 5.5.0  © 2001-2007 Comsenz Inc.
Processed in 0.081288 second(s), 5 queries

清除 Cookies - 联系我们 - Linux伊甸园 - Archiver - WAP