请教一个makefile

发布于 2022-10-15 06:53:34 字数 469 浏览 24 评论 0

ifneq ($(KERNELRELEASE),)
        obj-m := pcnet32.o
else
        KERNELDIR ?= /lib/modules/$(shell uname -r)/build
        PWD := $(shell pwd)
default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
endif

请问default下的语句是不是只有在KERNELRELEASE未定义的时候会执行一次,第二次读取该makefile时(KERNELRELEASE被定义),将不会再次执行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

長街聽風 2022-10-22 06:53:34

会的
第一次是未定义执行下面这句
再make 到这的时候,就执行上面那句了

◇流星雨 2022-10-22 06:53:34

回复 2# amarant

也就说    $(MAKE) -C $(KERNELDIR) M=$(PWD) modules会被执行两次?

云淡月浅 2022-10-22 06:53:34

回复 1# createwindow

   第一次执行Makefle的时候,发现KERNELRELEASE没有被设置,则进入内核源码树所在的位置,读那个位置的Makefile,build是一个软链接指向内核树所在的目录。内核源码树的根Makefile对KERNELRELEASE变量进行了赋值。然后运行到了default,重新运行了这个Makefile文件。此时KERNELRELEASE已被赋值,这样就生成那个目标。先进入内核源码树找Makefile,然后在当前目录也就是模块源码目录生成模块。

谜兔 2022-10-22 06:53:34

如ls所言

桃酥萝莉 2022-10-22 06:53:34

回复 4# embeddedlwp

我最想知道的就是:
    default:
        $(MAKE) -C $(KERNELDIR) M=$(PWD) modules

被执行一次或者两次,不好意思比较笨。

南烟 2022-10-22 06:53:34

本帖最后由 amarant 于 2011-05-16 16:53 编辑

回复 6# createwindow

    执行一次

刘备忘录 2022-10-22 06:53:34

回复 7# amarant

    非常感谢两位的解答。

只为守护你 2022-10-22 06:53:34

本帖最后由 embeddedlwp 于 2011-05-16 16:57 编辑

{:2_172:}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文