2012-01-08 90 views
0

我正在尝试构建一些我添加到Ubuntu源代码中的内核模块。经过多次失败的尝试编译后,我发现相同的错误继续发生在不同的地方。编译器无法找到位于文件夹中的包含目录中的一组标题。如何将include目录添加到内核源代码的makefile中?

E.X.

主要文件夹:驱动器/ SCST/

子文件夹:驱动器/ SCST/iSCSI的SCST/

包括文件夹:驱动器/ SCST /包括

我如何可以添加包括文件夹makefile?

这里是makefile;

ccflags-y += -Wno-unused-parameter 

scst-y  += scst_main.o 
scst-y  += scst_pres.o 
scst-y  += scst_targ.o 
scst-y  += scst_lib.o 
scst-y  += scst_sysfs.o 
scst-y  += scst_mem.o 
scst-y  += scst_tg.o 
scst-y  += scst_debug.o 

obj-$(CONFIG_SCST) += scst.o dev_handlers/ iscsi-scst/ 

我50%肯定的如何与一个“正常”的makefile做它作为一个不与内核源代码的工作,但我怎么能有一个像上面这样做呢?

在此先感谢。

回答

0

驱动程序代码的惯例是将特定驱动程序的包含文件插入驱动程序所在的同一目录中,并包含为#include "header.h"。但如果你想这样做,你的方式使用gcc的-I选项,所以它可能看起来像-Idrivers/scst/include或沿着这些线的东西,它应该被添加到ccflags。注意:这个路径可能会根据你正在编辑的Makefile的位置而改变。

+0

我真的没有一个正确的方法,我只是想让这个东西编译正确。所以你说我应该将“include”文件的内容复制到需要它们的目录中? – ianc1215 2012-01-08 02:48:01

+0

是的,因为驱动程序中使用的标头通常是特定于驱动程序的,并且标准约定是,如果仅在驱动程序中使用它,则将其添加到相同的目录中。如果在通用内核逻辑中使用它,它将在include/linux中进行,如果它的体系结构特定并在多个点中使用,它将包含在include/asm – 2012-01-08 02:48:58

+0

因此,如果所有正在构建的SCST模块模块都需要这些头文件,我应该添加它们以包含/ linux的权利,因为他们不具体的拱?即使他们只用于这个项目? – ianc1215 2012-01-08 03:08:01

相关问题