问题标签 [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.
linux-kernel - 如何定义一个必须至少选择其子选项之一才能使其工作的 Linux 内核 Kconfig 项?
我正在编写一个内核模块,它有两个可以使用的低级选项。这两个选项都可以选择为 M/Y/N,但必须至少选择其中一个,否则模块将不起作用。就像下面这样:
我写如下,但两个子选项都可以取消选择。
如何在 kconfig 中编写这样的配置?
linux-kernel - 从 defconfig 获取内核配置
标题说明了一切:我需要.config
用于编译内核的文件,但我只有 defconfig 文件。我已经看到了有关如何从前者生产后者的说明,但不是相反。可能吗?
linux-kernel - Linux 内核的 `make defconfig` 究竟是做什么的?
我可以使用以下命令为.config
基于 ARM 的自定义开发板创建基于指定架构默认值的 Linux 内核文件:
我认为这个命令或多或少地复制./arch/arm/configs/var_som_mx6_android_defconfig
到./.config
. 但是,生成的.config
文件并不完全是副本:
我不明白额外的行是从哪里来的,而且我一直发现内核配置、makefile 和构建脚本的内部工作方式很难理解。谁能解释一下这些行.config
可能来自哪里?
embedded - KConfig 混合文件
我目前正在为 ESP32 设备开发一些固件。我在开发过程中到了需要在 Kconfig 文件中编写一些东西的阶段。
我只是在开发一个组件,我有自己的 Kconfig 文件。但是在“make menuconfig”中有一个特定的条目(由团队的一位开发人员创建),我想从我的 kconfig 文件中添加一些条目。有什么办法吗?无论如何要从不同的 kconfig 文件中添加条目吗?某种包括。
干杯!
linux-kernel - 针对 ARM 的 Linux 内核 4.10.8 的编译错误
我正在尝试为 arm 交叉编译 Linux 内核 4.10.8,但出现此错误:
知道如何解决这个问题吗?我不知道这个模块是用来做什么的,所以我不知道我是否真的需要编译它,但是我在 menuconfig 中找不到禁用这个模块的地方?
c - Kconfig 和 C 枚举
我有一个这样定义的多项选择菜单:
我想将选择映射到枚举,但 Kconfig 只有三态和字符串类型,所以我不能这样做,因为 AUDIO_OUTPUT_MODE 的值是字符串而不是文字:
直接使用 int 会起作用,但有更清洁的解决方案吗?
linux - 通过 autoconf 构建具有单独源代码和构建目录的树外内核模块
给定一个使用 autoconf(配置脚本)提供用户模式应用程序和内核驱动程序的包,其目录结构如下:
./configure --options
这在本地配置(运行)时成功配置和构建用户和驱动程序。
然而,配置脚本的一个有用功能是您可以拥有单独的源和构建目录,只需从构建目录运行脚本即可,例如:
这适用于用户应用程序,但我无法在此上下文中构建内核驱动程序。在驱动程序中Makefile.am
,我有以下内容,如this answer中所建议:
但这无法编译,因为它期望 Kbuild 或 Makefilesrc
在M
. 省略src
确实让它找到了 Kbuild,但它无法找到实际的源文件 ( no rule to make target //path/in/build//driver.o
)。
像其他一些答案所暗示的那样使用O=
是不正确的,因为这指定了查找内核输出文件(.config
等)的路径,而这些文件仍在LINUX_SOURCE_DIR
. (因此尝试使用它会导致各种其他丢失文件错误。)
我希望有一个不需要修改任何实际 Kbuild 脚本的解决方案,因为这些不在我的包的控制范围内。
到目前为止,我想出的最佳选择是在调用 Kbuild 之前将所有模块源文件复制/链接到构建目录中,这并不理想。我希望有一个隐藏的设置可以用于此。
kernel-module - 如何链接其他目录中的文件?
我有一个足够大的项目,可以从按目录分类文件中受益。我正在尝试用它们构建一个内核模块。
该文档指出以下内容:
但是,这似乎与我需要的不同。由此产生的是两个独立的.ko
文件;每个目录中的一个,每个目录中的目标文件的合并。
这是我的项目(简化):
我认为以这样的方式结束是合理的:
我真正结束的是:
我希望每个目录构建一个模块不是 Kbuild 设计的基本假设。运送几个模块听起来像是一团糟,没有任何收获。
这是我的根Makefile
:
这是subdir/Makefile
:
这是foo.c
:
这是subdir/bar.c
:
make
(在根目录中)吐出以下警告:
我的插入尝试kernel-module.ko
被拒绝:
我如何告诉 Kbuild 它subdir/bar.o
应该是它自己模块的一部分kernel-module.ko
而不是它自己的模块?
security - 在 Yocto 中启用/禁用内核配置选项
我有一个名为的配置选项CONFIG_X86_SMAP
,我想在我的内核映像中禁用它。问题是我无法确定此选项的设置位置。我可以确认它没有在我的defconfig
文件中设置,也没有由任何配置片段“ .cfg
”设置。
即使我尝试使用.cfg
如下禁用它:
我仍然发现它在我最终生成的 .config 文件中启用。我无法理解如何启用此选项。
注意:此配置选项不依赖于任何其他驱动程序/功能。
linux - 当 CONFIG_IKCONFIG 设置为模块 (=m) 时,如何从内核映像文件中提取配置?
如何从内核映像文件中提取内核配置?
内核映像文件类型为:
内核已CONFIG_IKCONFIG
启用编译。然而,
返回
注意:我正在尝试在不启动内核的情况下获取配置。