道歉,如果我解释得很严重,或者问一些明显的流血事件,但我是Linux内核的新手并且有点深入...
我们有一个嵌入式Linux系统,其中包含一个(包含数百个 stuff 文件夹的(记录很糟糕的)SDK,大多数文件夹包含rules.make,make,make.config或一些变体of ...和包含“master”makefile&的根文件夹rules.make表示你可以从根文件夹中输入“make sysall”并构建整个包。
到目前为止一直很好,但是尝试调试它是一个问题,因为文档会说:
“要让内核输出调试消息,只需定义#outputdebugmessagesplz ”
好的,但其中一些内容是在“master”make / rules文件中定义的,其中一些是在子make / rules / config文件中定义的,有些是在.h文件中......当然它是更好的是从“顶部”make.config开启/关闭这些东西,而不是修改单个.h文件,然后记得再次关闭它们。
所以我认为递归构建一个树是有用的,从主“make”文件开始并遵循它所做的一切,定义或重新定义的所有内容等......但是没有似乎是一种简单的方法吗?
我假设我错过了一个“make”选项,这个选项会抛出这个信息,或者使用makefile / config只会有效吗?
答案 0 :(得分:2)
您的情况并不少见。在为嵌入式系统开发时,您可能会遇到许多以特定方式解决问题的自定义系统。由于人们已经对您的问题发表了评论,因此没有简单的方法来为您的makefile结构/框架生成依赖关系图。但有一些事情你可以尝试,我会根据你的情况尝试建立我的建议。既然你说过:
我是Linux内核的新手,有点深入...
和
我们有一个嵌入式Linux系统到达时(非常糟糕 记录)包含数百个文件夹的SDK
您可以尝试以下方法:
基本上,您应该尝试查明要自定义的内容,并了解它与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 question和this one。您可能会从与您遇到相同问题的人那里找到有用的信息。
希望它有所帮助!