标签: kbuild

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

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

linux linux-kernel kbuild

25
推荐指数
1
解决办法
2万
查看次数

Linux内核的`make defconfig`究竟做了什么?

我可以使用以下命令.config根据基于ARM的自定义板的指定体系结构默认值创建Linux内核文件:

ARCH=arm make defconfig KBUILD_DEFCONFIG=var_som_mx6_android_defconfig
Run Code Online (Sandbox Code Playgroud)

我以为这个命令或多或少复制./arch/arm/configs/var_som_mx6_android_defconfig到了./.config.但是,生成的.config文件并不完全是副本:

$ diff --unified arch/arm/configs/var_som_mx6_android_defconfig  .config
--- arch/arm/configs/var_som_mx6_android_defconfig  2017-01-20 12:10:51.891515984 -0800
+++ .config 2017-01-26 15:31:29.000000000 -0800
@@ -407,6 +407,7 @@
 CONFIG_ARM_ERRATA_751472=y
 CONFIG_ARM_ERRATA_794072=y
 CONFIG_ARM_ERRATA_761320=y
+CONFIG_ARM_ERRATA_845369=y
 # CONFIG_ARM_ERRATA_753970 is not set
 CONFIG_ARM_ERRATA_754322=y
 # CONFIG_ARM_ERRATA_754327 is not set
@@ -2683,7 +2684,6 @@
 CONFIG_AUTOFS4_FS=y
 CONFIG_FUSE_FS=y
 # CONFIG_CUSE is not set
-CONFIG_AUFS_FS=y

 #
 # Caches
@@ -2759,6 +2759,21 @@
 # CONFIG_PSTORE is not set
 # CONFIG_SYSV_FS is not set
 # CONFIG_UFS_FS is …
Run Code Online (Sandbox Code Playgroud)

linux-kernel kbuild

24
推荐指数
1
解决办法
3万
查看次数

如何从.config创建defconfig文件?

我已经完成make menuconfig了一个电路板defconfig并修改了一些配置.当我选择save时,.config在Kernel top目录中创建了一个new .

我想defconfig为这个.config创建的文件创建新的.

我可以将其复制.config为新defconfig副本arch/arm/configs/吗?

$ cp .config arch/arm/configs/board_new_defconfig
Run Code Online (Sandbox Code Playgroud)

linux-kernel embedded-linux kbuild archlinux-arm

22
推荐指数
1
解决办法
4万
查看次数

如何使用make和编译为C99?

我正在尝试使用Makefile编译linux内核模块:

obj-m += main.o

all:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules

clean:
    make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
Run Code Online (Sandbox Code Playgroud)

这给了我:

main.c:54: warning: ISO C90 forbids mixed declarations and code
Run Code Online (Sandbox Code Playgroud)

我需要切换到C99.阅读后我注意到我需要添加一个标志-std = c99,不确定它在哪里添加.

如何更改Makefile以便它编译为C99?

linux makefile c99 c89 kbuild

19
推荐指数
3
解决办法
3万
查看次数

kbuild如何实际工作?

当我正在开发一个Linux驱动程序时,我已经阅读了有关如何通过本文档编写linux kbuild makefile的内容

我知道kbuild系统使用makefile变量,例如obj-y obj-m来确定要构建的内容以及如何构建.

但我感到困惑的是kbuild系统在哪里真正执行构建过程.总之,如果我有obj-m = a.o,那么kbuild系统在哪里解析obj-m并执行gcc a.c

c linux makefile linux-kernel kbuild

17
推荐指数
1
解决办法
7736
查看次数

在单独的对象目录中构建树外的Linux内核模块

我正在面对Linux内核构建系统(Kbuild,内核≥2.6.28)以及更大项目的目录结构和构建系统.我们的项目包含一个树外的Linux内核模块,我们的目录结构如下所示(显然是简化的):

checkout/src/common/*.c           source files (common to Linux and other platforms)
checkout/src/linux-driver/*.c     source files (for the Linux kernel driver)
checkout/build/linux/Kbuild       Kbuild
tmp/linux-2.6.xx/                 where the Linux kernel is unpacked and configured
output/linux-arm-debug/           where object files must end up
Run Code Online (Sandbox Code Playgroud)

构建过程不得修改任何内容checkout,并且构建模块不得修改任何内容tmp/linux-2.6.xx.所有输出文件必须最终output/linux-arm-debug(或在构建时选择任何体系结构和调试变体).

我已经阅读kbuild/modules.txt,并开始写我的Kbuild文件:

MOD_OUTPUT_DIR = ../../../output/linux-$(ARCH)-$(DEBUG)
obj-m += $(MOD_OUTPUT_DIR)/foo_mod.o
$(MOD_OUTPUT_DIR)/our_module-objs := $(MOD_OUTPUT_DIR)/foo_common.o $(MOD_OUTPUT_DIR)/foo_linux.o
Run Code Online (Sandbox Code Playgroud)

这会将目标文件存储在与Kbuild生命不同的目录中.现在我如何指定foo_common.o需要编译…/checkout/src/common/foo_common.cfoo_linux.o从中编译…/checkout/src/linux-driver/foo_linux.c

makefile linux-kernel kbuild

9
推荐指数
2
解决办法
2万
查看次数

编译Linux内核时,CC,LD和CC [M]输出的代码是什么?

从头开始编译Linux时,我意识到编译时会出现编译代码.

例如CC文件名,LD文件名,CC [M]文件名.

这些代码是什么意思?

linux makefile linux-kernel kbuild

9
推荐指数
2
解决办法
8999
查看次数

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

我打算在我的项目中添加对menuconfig的支持.该项目与linux内核无关,所以我必须在menuconfig和Makefile中从头开始编写所有内容.

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

任何好的教程开始?

linux makefile linux-kernel kbuild

9
推荐指数
1
解决办法
1778
查看次数

Kconfig 的调试模式还是详细模式?

我正在使用 LeopardBoard DM368,我想启用一些视频硬件。相关模块有 vpfe-capture、isif 和 tvp7002。

我已经编写了一个 defconfig 文件,其中包含我认为是正确的 CONFIG_FOO 参数集,以便一切正常工作。从各个 Kconfig 文件中出现的依赖关系来看,我相信我已经正确完成了所有操作,但我似乎无法阻止 kconf 丢弃CONFIG_ISIFCONFIG_VPFE_CAPTURE.

我非常丑陋的选择是进入并开始手动修改 makefile。这可以获取我想要的模块,但它显然与 Kconfig 系统的设计和意图不一致,并且会破坏任何像“make gconfig”这样的工具。

make 有一个“-d”详细标志来解释它如何处理依赖项。kconf 是否有类似的东西,我可以在其中解释为什么它没有给我我想要获取的两个 CONFIG?

makefile linux-kernel kbuild

6
推荐指数
1
解决办法
3167
查看次数

内核makefile中的$(call cmd,tags)这里的cmd指的是什么?

在内核 Makefile 中我发现了如下代码:

ctags CTAGS CSCOPE: $(HEADERS) $(SOURCES) 

$(ETAGS) $(ETAGSFALGS) $(HEADERS) $(SOURCES)

$(call cmd, ctags)
Run Code Online (Sandbox Code Playgroud)

另外,我在哪里可以找到宏或函数?

kernel makefile linux-kernel kbuild

6
推荐指数
1
解决办法
2106
查看次数

标签 统计

kbuild ×10

linux-kernel ×9

makefile ×7

linux ×5

archlinux-arm ×1

c ×1

c89 ×1

c99 ×1

embedded-linux ×1

kernel ×1