Joh*_*n U 6 c linux embedded makefile
抱歉,如果我解释得很严重,或者我要求一些明显的流血,但我是Linux内核的新手并且有点深入...
我们有一个嵌入式Linux系统,它带有一个(包含数百个文件夹的东西),包含一个rules.make,make,make.config或者某些变体的文件夹,包含一个"master"makefile&rules.make这意味着您可以从根文件夹中键入"make sysall"并构建整个包.
到目前为止一直很好,但尝试调试它是一个问题,因为文档将说:
" 要让内核输出调试消息,只需定义#outputdebugmessagesplz "
好的,但其中一些是在"master"make/rules文件中定义的,其中一些是在子make/rules/config文件中定义的,有些是在.h文件中...当然它更好从"顶部"make.config打开/关闭这些东西,而不是修改单个.h文件,然后必须记住再次关闭它们.
所以我认为以递归方式构建一个树是有用的,从主"make"文件开始并遵循它所做的一切,定义或重新定义的所有内容等......但似乎没有这样做的简单方法?
我假设我在这里错过了一个"make"选项,将这个信息吐出来,或者使用makefile/config只会有效吗?
你的情况并不少见。在开发嵌入式系统时,您可能会遇到许多以特定方式解决问题的自定义系统。正如人们已经对您的问题发表评论一样,没有简单的方法可以为您的 makefile 结构/框架生成依赖关系图。但有些事情你可以尝试,我会根据你的情况尝试提出我的建议。既然你说过:
我对 Linux 内核还是个新手,而且有点深入……
和
我们有一个嵌入式 Linux 系统,它附带一个(文档非常糟糕的)SDK,其中包含数百个文件夹的内容
您可以尝试以下操作:
基本上,您应该尝试确定您想要自定义的内容,并查看它如何与您的 SDK 交互。如果它是内核,那么仅使用它将为您提供一个起点。Linux 内核有自己的 makefile 构建系统,名为kbuild。您可以在内核的文档文件夹中找到有关它的更多信息。
除此之外,如果您有一个控制多个组件的复杂 makefile 结构,那么尝试了解 makefile 的工作原理将对您有所帮助。以下是了解 makefile 的好资源:
O'Reilly 的开放书“使用 GNU Make 管理项目”
此外,在尝试构建自己的工具之前,您可以检查是否有一个开源项目可以满足您的需求。在谷歌上的快速搜索给了我这个:
另外,请检查此问题和此问题。您可能会从与您有相同问题的人那里找到有用的信息。
希望能帮助到你!