在makefile中包含dir

在makefile中包含dir,makefile,kbuild,Makefile,Kbuild,我正在Ubuntu中编译一个C文件,但在包含头文件时出错。我的Makefile如下所示: obj-m := ov7725.o CC = /opt/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc EXTRA_CFLAGS +=-march=armv5 CFLAGS += -I /usr/local/arm/3.3.2/arm-linux/sys-include/linux #LINUXKERNEL_INSTALL_DIR = /lib/modules/2

我正在Ubuntu中编译一个C文件,但在包含头文件时出错。我的Makefile如下所示:

obj-m := ov7725.o
CC = /opt/arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc
EXTRA_CFLAGS  +=-march=armv5
CFLAGS  += -I /usr/local/arm/3.3.2/arm-linux/sys-include/linux
#LINUXKERNEL_INSTALL_DIR = /lib/modules/2.6.32-21-generic/build
#CFLAGS = -Wall -I $(LINUXKERNEL_INSTALL_DIR)

#export LINUXKERNEL_INSTALL_DIR CROSS_COMPILE CFLAGS PLATFORM
KDIR := /home/mayank/DM355SDK789311old/fs/fs/lib/modules/2.6.29-ridgerun-davinci1/build
#/lib/modules/2.6.32-32-generic-pae/build
PWD := $(shell pwd)

default:
#   $(MAKE) -C $(KDIR) M=$(PWD) modules
    make -C $(KDIR) ARCH=arm CROSS_COMPILE=/opt/arm-linux-gnueabi/bin/arm-linux-    gnueabi- M=`pwd` modules

#all:
#   $(CROSS_COMPILE) gpio_custom_dir_driver.c -o hello
clean:
    rm -rf *o user_gpio
但是,即使在makefile中包含了带有
CFLAGS
的行之后,对于包含的目录中存在的一个未包含的头文件,我也会收到一个错误


是否有其他方法,如何在生成文件中包含头文件?

您的CFLAGS额外的\u CFLAGS未正确应用。在makefile中,它们只是C编译器选项/定义的通用名称,必须添加到调用编译器的命令行(CROSS\u COMPILE),但不能通过环境变量(正如您尝试使用export时所做的那样,这在makefile中显然是错误的)。您的makefile中必须具有类似于以下内容的内容:

<target>:
     $(CROSS_COMPILE) $(CFLAGS) $(EXTRA_CFLAGS) ....
:
$(交叉编译)$(CFLAGS)$(额外CFLAGS)。。。。

您运行的是什么命令,编译的是什么文件,确切的错误消息是什么?编辑您的问题并复制粘贴它们。这显然是一个Linux内核模块生成文件(使用Kbuild框架),内核源代码树中有类似的规则,而模块目录中通常没有。我怀疑Mayank的错误与他的C源代码有关,但在没有看到错误的情况下,这纯粹是猜测。@Gilles,好的,相应地标记了它,如果问题得到澄清,我将删除我的ans。尽管从未使用过kbuild的东西。