2011-07-16 85 views
0

我正在Ubuntu中編譯一個C文件,但在包含頭文件時出現錯誤。我的Makefile文件如下:在makefile中包含dir

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行之後,我越來越不包含一個頭文件是存在於包含目錄中的錯誤。

有沒有其他辦法,我怎樣才能將頭文件包含在makefile中?

+2

您正在運行什麼命令,編譯了哪個文件,以及確切的錯誤消息是什麼?編輯你的問題並複製粘貼它們。 – Gilles

回答

0

Your CFLAGS and EXTRA_CFLAGS未正確應用。在makefile中,它們只是C編譯器選項/定義的通用名稱,必須添加到命令行調用編譯器(CROSS_COMPILE)中,但不能通過環境變量(正如你試圖做的那樣 - 這在makefile中顯然是錯誤的) 。您必須在makefile中有類似以下內容:

<target>: 
    $(CROSS_COMPILE) $(CFLAGS) $(EXTRA_CFLAGS) .... 
+0

這顯然是一個Linux內核模塊makefile(使用Kbuild框架),在內核源碼樹中有這樣的規則,並且通常不在模塊目錄中。我懷疑Mayank的錯誤與他的C源有關,但沒有看到錯誤,這是純粹的猜測。 – Gilles

+0

@Gilles,好吧,相應地標記它,如果問題將被澄清 - 我將刪除我的答案。儘管如此,從未使用kbuild的東西。 – pmod