gpt4 book ai didi

c - 构建 makefile 依赖/继承树

转载 作者:IT王子 更新时间:2023-10-29 00:58:06 29 4
gpt4 key购买 nike

如果我解释得不好或者问的问题很明显,我深表歉意,但我是 Linux 内核的新手,有点深入......

我们有一个嵌入式 linux 系统,它带有一个(非常糟糕的文档)SDK,其中包含数百个stuff文件夹,大多数文件夹包含 rules.make、make、make.config 或一些变体of... 以及包含“主”makefile 和 rules.make 的根文件夹,这意味着您可以从根文件夹键入“make sysall”,它会构建整个包。

到目前为止一切顺利,但是尝试调试它有点问题,因为文档会这样说:

要让内核输出调试消息,只需定义#outputdebugmessagesplz

好的,但是其中一些是在“主”make/rules 文件中定义的,其中一些是在子 make/rules/config 文件中定义的,一些是在 .h 文件中...当然是从“顶部”make.config 打开/关闭这些东西比修改单个 .h 文件然后不得不记住再次关闭它们要好得多。

所以我认为递归构建树是一件有用的事情,从主“make”文件开始并跟踪它所做的一切,定义或重新定义的一切,等等......但没有似乎是一种简单的方法?

我假设我在这里遗漏了一个“make”选项来吐出这些信息,或者 makefile/config 的用法可以正常工作?

最佳答案

你的情况并不少见。在为嵌入式系统开发时,您可能会遇到许多以特定方式解决问题的自定义系统。正如人们已经对您的问题发表评论的那样,没有简单的方法可以为您的 makefile 结构/框架生成依赖关系图。但是有些事情你可以尝试,我会尽量根据你的情况提出我的建议。既然你说过:

Im new to the Linux kernel and kinda in at the deep end...

We have an embedded-linux system which arrives with a (very badly documented) SDK containing hundreds of folders of stuff

您可以尝试以下操作:

  • 如果您的 SDK 由第三方供应商提供,请尝试与他们联系并获得一些支持。
  • SDK 通常提供一种抽象来处理多个组件,而无需深入了解每个组件的实际工作原理。尝试找出你的问题,比如如果你想自定义内核配置,你可以在你的 SDK 上找到 linux 内核文件夹(假设你的 SDK 由一组文件夹组成,其中包含库,应用程序和东西的源代码,其中之一可能是内核)并运行 make menuconfig。这将打开一个基于 ncurses 的配置 GUI,您可以在其中导航和选择内核选项。
  • 正如人们已经指出的那样,您可以尝试运行 ma​​ke -n 并检查输出。您也可以尝试运行 ma​​ke -p | less 并检查输出,但我不推荐这样做,因为它只会打印读取 makefile 产生的数据库(规则和变量值)。您必须解析此输出以找出您想要的内容。

基本上,您应该尝试确定要自定义的内容,并查看它如何与您的 SDK 交互。如果它是内核,那么只使用它会给你一个起点。 linux 内核有自己的 makefile-build 系统,名为 kbuild。您可以在 kernel's Documentation folder 找到更多相关信息。 .

除此之外,如果您有一个控制多个组件的复杂 makefile 结构,尝试了解 makefile 的工作原理将对您有所帮助。以下是了解 makefile 的好资源:

GNU Make official documentation

O'Reilly's Open Book "Managing Projects with GNU Make"

此外,在尝试构建您自己的工具之前,您可以检查是否有一个开源项目可以满足您的需求。在谷歌上快速搜索给了我这个:

另外,检查 this questionthis one .您可能会从与您有相同问题的人那里找到有用的信息。

希望对您有所帮助!

关于c - 构建 makefile 依赖/继承树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563302/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com