0

我正在 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

但是,即使在CFLAGSmakefile 中包含该行之后,对于包含目录中存在的一个未包含的头文件,我也会收到错误消息。

还有其他方法吗,如何在makefile中包含头文件?

4

1 回答 1

0

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

<target>:
     $(CROSS_COMPILE) $(CFLAGS) $(EXTRA_CFLAGS) ....
于 2011-07-16T21:28:25.747 回答