很抱歉,如果我解释得很糟糕,或者我问的是一些显而易见的问题,但我对Linux内核并不熟悉,而且还处于最底层.
我们有一个嵌入式linux系统,它附带了一个(非常糟糕的文档) SDK,其中包含数百个文件夹,大多数文件夹包含一个rules.make、make、make.config或一些变化的.根文件夹包含一个“主”makefile & rules.make,这意味着您可以在根文件夹中键入“makefile”,然后构建整个包。
到目前为止,还不错,但是尝试调试它有点问题,因为文档会这样说:
“要让内核输出调试消息,只需定义#outputdebugmessagesplz”
好的,但是其中一些东西是在“主”make/rules文件中定义的,有些是在子make/rules/config文件中定义的,有些是在.h文件中定义的.当然,从“顶部”make.config打开/关闭这些东西要好得多,而不是修改单个.h文件,然后必须记住再次关闭它们。
因此,我认为递归构建树是一件有用的事情,从主"make“文件开始,然后跟踪它所做的一切,定义或重新定义的所有东西,等等.但似乎没有一种简单的方法可以做到这一点?
我想我在这里遗漏了一个"make“选项,它可以将这些信息公之于众,或者使用makefile/config来工作吗?
发布于 2013-04-23 12:59:46
你的情况并不少见。在为嵌入式系统开发时,您可能会遇到许多以特定方式解决问题的自定义系统。正如人们已经对您的问题发表评论的那样,生成makefile结构/框架依赖关系图的方法并不简单。但是有些事情你可以尝试,我会尝试根据你的情况提出我的建议。既然你说过:
我对Linux内核还很陌生,在很深的程度上.
和
我们有一个嵌入式linux系统,它附带了一个包含数百个文件夹的SDK (非常糟糕的文档)。
您可以尝试以下几种方法:
基本上,您应该尝试定位您想要自定义的内容,并查看它如何与SDK交互。如果它是内核,那么只使用它将给您一个起点。linux内核有自己的makefile构建系统,名为kbuild。您可以在内核文档文件夹上找到有关它的更多信息。
此外,如果您有一个控制多个组件的复杂makefile结构,尝试理解makefile如何工作将对您有所帮助。以下是学习makefiles的好资源:
奥赖利的公开书
此外,在尝试构建自己的工具之前,您可以检查是否有一个开源项目可以满足您的需要。在google上的快速搜索给了我这样的信息:
另外,检查这个问题和这一个。你可能会从那些和你有同样问题的人那里找到有用的信息。
希望能帮上忙!
https://stackoverflow.com/questions/14563302
复制相似问题