加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

构建makefile依赖/继承树

发布时间:2021-01-12 15:37:22 所属栏目:Linux 来源:网络整理
导读:抱歉,如果我解释得很严重,或者我要求一些明显的流血,但我是Linux内核的新手并且有点深入 我们有一个嵌入式Linux系统,它带有一个(包含数百个文件夹的东西),包含一个rules.make,make,make.config或者某些变体的文件夹,包含一个“master”makefile rules.make

抱歉,如果我解释得很严重,或者我要求一些明显的流血,但我是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结构/框架生成依赖图.但有一些事情你可以尝试,我会根据你的情况尝试建立我的建议.既然你说过:

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,您可以导航并选择内核选项.
>正如人们已经指出的那样,你可以尝试运行make -n并检查输出.你也可以尝试运行make -p |更少并检查输出,但我不建议这样做,因为它只会打印由于读取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”

此外,在尝试构建自己的工具之前,您可以检查是否有一个开源项目可以执行您想要的操作.在谷歌上快速搜索给了我这个:

> makegrapher

另外,请查看this question和this one.您可能会从与您遇到相同问题的人员那里找到有用的信息.

希望能帮助到你!

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读