gpt4 book ai didi

c++ - Makefile 编译内核模块以包含树源文件

转载 作者:太空狗 更新时间:2023-10-29 12:33:43 25 4
gpt4 key购买 nike

我不熟悉使用 makefile 编译内核模块以包含树外源文件。我已经阅读了一些教程,但仍然不足。没有太详细,我创建了一个场景来描述问题和生成的 makefile。

dir1/main.c

dir2/subdir2/file.c
dir2/subdir2/include/file.h

下面是生成的 makefile

obj-m:=main.o
main-y := ../dir2/include/file.o
KDIR := /home/userid/rowboat-android/kernel/
PWD := $(shell pwd)


default:
$(MAKE) ARCH=arm CROSS_COMPILE=/home/userid/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/arm-eabi- -C $(KDIR) SUBDIRS=$(PWD) modules

clean
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) clean

根据描述的场景,这个 Makefile 是否正确?

引用资料讨论了 ccflags-y 和 EXTRA_CFLAGS。有人可以解释一下这些开关的用途吗?

我的主要引用来源是

  1. Building External Modules
  2. Linux Kernel Makefiles
  3. 关于 Stackoverflow 的问题和答案

提前感谢您的宝贵时间

最佳答案

根据Linux documentation :

ccflags-y specifies options for compiling with $(CC).

     Example:
# drivers/acpi/Makefile
ccflags-y := -Os
ccflags-$(_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT

ccflags-obj 会将指定的任何标志传递给 $(CC) 当 make 构建 obj.o.如果您使用 ccflags-y 那么这将充当一种通配符并将该标志传递给由 makefile 构建的所有对象。通常这与树外模块无关,但如果您的 Makefile 调用其他 Makefile,则这些标志的效果是递归的。

同一文档说 EXTRA_CFLAGS 是做同样事情的旧方法,您不应该使用它。

关于c++ - Makefile 编译内核模块以包含树源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19134709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com