编译模块.o文件时,遇到下面的错误:
parse error before "this_object_must_be_defined_as_export_objs_in_the_Makefile"
【错误原因】
出现这个错误的根本原因是,使用了模块方式来编译程序,并且,可能在程序中使用了EXPORT_SYMBOL来导出某些符号,而编译的时候并没有指定这个模块是需要导出符号表的,从而导致出错。
【解决办法】
如果该模块是放到内核源代码目录中的,那么就去确认一下内核源代码目录下的MakeFile中的export-objs列表中,是否存在该模块的名字,如果没有,则需要添加进来。
如果该模块是单独编译的,并不是跟内核放到一起的,而是采用自己编写的或者独立的MakeFile进行编译,那么可以在CFLAGS中加上“-DEXPORT_SYMTAB”选项,我用的MakeFile如下:
KERNEL = /root/kernel/kernel-2.4.18
DEST = spi_bus
CFLAGS = -Wall -I$(KERNEL)/include -c -DEXPORT_SYMTAB
all: $(DEST).o
clean:
%.o: %.c