리눅스 드라이버 모듈을 작성하다보면 내가 작성한 혹은 포팅한 드라이버에서 

또 다른 드라이버 모듈(커널에 포함되지 않은)의 함수를 호출하는 경우가 왕왕있다.

호출하려는 함수는 당연히  EXPORT_SYMBOL 매크로 정의되어 있는데  드라이버를 올리면

unknown symbol 이라며 모듈이 올라가지 않는다.


이럴경우는 작성된 드라이버를 컴파일 할때  KBUILD_EXTRA_SYMBOLS 을 이용하여 해당 함수의 심볼을 얻어야 한다.

그냥 Makefile 파일 수정하는 것이다.


아래는 dev-test.c  를 컴파일하는 Makefile 이다.


#

# kernel 3.0 driver Makefile

#


obj-m  := dev-simple.o

dev-simple-objs := dev-test.o


EXTRA_STR :="/another-driverer/Module.symvers"


KDIR   := /mykernel/linux

PWD    := $(shell pwd)


default:

        CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm $(MAKE) -C $(KDIR) M=$(PWD) KBUILD_EXTRA_SYMBOLS=$(EXTRA_STR)


clean :

        rm -rf *.ko

        rm -rf *.mod.*

        rm -rf .*.cmd

        rm -rf *.o