首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建makefile依赖/继承树

构建makefile依赖/继承树
EN

Stack Overflow用户
提问于 2013-01-28 13:39:39
回答 1查看 7.6K关注 0票数 7

很抱歉,如果我解释得很糟糕,或者我问的是一些显而易见的问题,但我对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来工作吗?

EN

回答 1

Stack Overflow用户

发布于 2013-04-23 12:59:46

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

我对Linux内核还很陌生,在很深的程度上.

我们有一个嵌入式linux系统,它附带了一个包含数百个文件夹的SDK (非常糟糕的文档)。

您可以尝试以下几种方法:

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

基本上,您应该尝试定位您想要自定义的内容,并查看它如何与SDK交互。如果它是内核,那么只使用它将给您一个起点。linux内核有自己的makefile构建系统,名为kbuild。您可以在内核文档文件夹上找到有关它的更多信息。

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

GNU制作正式文件

奥赖利的公开书

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

另外,检查这个问题这一个。你可能会从那些和你有同样问题的人那里找到有用的信息。

希望能帮上忙!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14563302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档