问题标签 [kbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
3129 浏览

linux - 如何在内核 Makefile 中正确地进行清理

我正在将驱动程序移植到 3.4 内核,当我执行 make clean 时,它并没有清理一些 .o 文件,所以现在我想知道这样做的正确方法是什么。

我有以下 Makefile(注意:在与内核不同的目录中):

当我运行 make clean 时,它会清除 foo3.o,但会留下 foo.o、foo1.o 和 foo2.o。我可以将所有这些放入干净的文件中,但这似乎是多余的,我认为有某种方法可以使 Makefile 自动清除 obj-y 目录中的所有对象。

谢谢,

约翰

0 投票
2 回答
22885 浏览

linux - 如何从 Linux 内核映像中获取 .config?

我有一个 elf 格式的 Linux 内核映像,我想找出.config用于构建此内核的文件。当我对图像进行objdump时,我看到一个名为的部分kernel_config_data,其中包含文本但看起来不像配置文件。有没有办法检索这些信息?

0 投票
1 回答
1193 浏览

linux - 构建与导出符号共享目标文件的树外 Linux 内核模块

想象一个项目,需要构建两个 linux 内核模块,源码树布局如下:

common_data.o 目标文件需要包含在两个模块中。所以这个项目的 Kbuild 文件看起来像这样:

如果 common_data.c 文件中没有导出符号(即 EXPORT_SYMBOL),它构建得很好。但是,如果有一些导出的符号(例如some_func),那么 MODPOST 将产生如下警告:

这是因为两个模块共享一个 Module.symvers 文件。可以在 mod1/ 和 mod2/ 目录中创建两个单独的 Kbuild 文件以避免出现此警告,因为这样就会有两个单独的 Module.symvers 文件。但这会导致另一个问题 - commond_data.o 对象将被构建两次 - 第一次是在编译 mod1.ko 时,第二次是在编译 mod2.ko 时。

有没有办法在使用单个 Kbuild 文件时抑制此警告,或者在使用两个单独的 Kbuild 文件时防止第二次重建 common_data.o 文件?

0 投票
1 回答
422 浏览

linux - Kbuild - 包括来自外部目录的源文件

我有一些源代码,我想用于内核模块和用户空间程序。我只想在我的源代码树中维护该代码的一个副本。我正在考虑将共享源文件放在共享文件夹中(内核树之外),让 kbuild 从外部目录构建这些文件,并在模块目录中生成 .o 文件。有没有使用 kbuild 包含来自外部目录的源文件的好方法?

我的目标目录看起来像这样:

虽然可以将 shared.c 作为构建过程的一部分复制到 foo 目录中,但这似乎是一个丑陋的解决方案,我想知道是否有更好的方法。

0 投票
1 回答
4179 浏览

linux-kernel - .ko 文件是如何构建的

我正在尝试将自己的驱动程序移植到Beagle board xm arm-cortex-A8。在移植时,我试图弄清楚.ko文件的实际构建方式。在我们的Makefile中,我们只有一个构建.o文件的命令。

文件是如何.ko构建的?

使用 linux- 2.6.38.8内核并尝试为我的内核配置我的驱动程序。

0 投票
1 回答
5319 浏览

linux - 如何加载预编译内核中已经存在的修改内核模块

一种方法是重新构建内核源代码,使需要修改的原始模块可加载。因此可以删除原始模块并插入修改后的模块。但这是一个耗时的过程。
我想知道是否有其他方法可以加载修改后的模块。

我对 MD 驱动程序进行了一些修改,并尝试将其加载到预编译的内核上。insmod 失败并出现以下错误消息:

md_mod:导出重复符号 bitmap_close_sync(由内核拥有)
insmod:插入“md-mod.ko”时出错:-1 模块格式无效

如果可以,请提供反馈。任何帮助,将不胜感激。谢谢 !

0 投票
2 回答
1433 浏览

module - SystemTap 失败并出现错误“警告:kbuild 以状态退出:2”

我构建了一个自定义内核 3.2-41,需要 kernel-debuginfo-common 和 kernel-debuginfo 包。我在内核 2.6.32-358 的 CentOS 系统上安装了这些软件包。使用新内核可以正常启动系统。我运行 stap 来列出系统调用和内核函数,没有任何问题:

但是,运行一个简单的 stap 脚本:

返回错误:

我在 /usr/src/kernels/3.2-41 下解压 3.2-41 的源码。我没有安装 kernel-headers-3.2.41.x86_64.rpm 软件包,因为它试图覆盖 CentOS 2.6.32-258 内核使用的 /usr/include/ 目录。我需要在 /usr/include 中安装头文件吗?这会导致这个问题吗?

0 投票
3 回答
3288 浏览

linux - 在我的项目中添加对 menuconfig / Kconfig 的支持

我计划在我的项目中添加对 menuconfig 的支持。该项目与 Linux 内核无关,因此我必须在 menuconfig 和 Makefile 中从头开始编写所有内容。

如何添加对 menuconfig 的支持并创建 Kconfig 并使 makefile 读取 .config 中的定义?

有什么好的教程可以开始吗?

0 投票
1 回答
2281 浏览

linux - 使用自定义头文件编译 Linux 内核模块

我想根据自定义标头编译一个简单的字符设备模块。文件夹因此组织,

mymod.c中,因此使用了标头,

在 Makefile 中:

一切都应该正常,模块编译没有问题,我可以通过 加载模块sudo insmod,但是模块不能正常工作。当我检查nm mymod.ko时,有很多变量和函数丢失。它看起来好像在链接后停止了customized_header.o。如果我删除了这个头文件及其函数,比如没有从模块调用头文件函数,它就可以完美地编译并得到所需的结果。

你能看出这里出了什么问题吗?

0 投票
1 回答
426 浏览

javascript - depstree.NamespaceNotFoundError:从未提供过命名空间 [此处的名称更改每个构建]

我正在尝试构建一个非常好的 MIT 许可的 html5 台球游戏。

http://www.agent8ball.com

这依赖于 kbuild:github.com/kevmoo/kbuild

构建这个谷歌关闭应用程序。

Kbuild 依赖于 brew,我在 linux 上,所以我使用 https://github.com/Homebrew/linuxbrew

每次构建时,我都会收到不同的命名空间依赖错误。我该如何解决这些?

请注意,它并不总是相同的错误。我不认为我在我的编程生涯中见过这种情况。