커널 버젼 업데이트후 __modpost 에러
먼저 커널과 따로 컴파일되는 모듈에 있는 함수를
EXPORT_SYMBOL(function_name);
으로 선언하였습니다.
그리고 제가 수정한 bonding 드라이버 모듈에서 이함수를 사용하기 위해
extern struct net_device * function_name(XXX);
형식으로 등록하여 사용할 수 있도록 하였습니다.
bonding드라이버는 커널에 있는 것을 수정하였으므로 커널과 같이 모듈형태로 컴파일 됩니다.
그런후 2.6.17 커널에서 커널 컴파일을 하면 이상없이 컴파일이 되었습니다.
그런데 똑같은 과정을 거쳐서 2.6.27 커널에서 컴파일을 하면 아래와 같은 __modpost 에러가 발생합니다.
__modpost전까지의 과정은 컴파일이 잘됩니다.
XXX@XXX ~/data/linux-2.6.27.9 $ make
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CALL scripts/checksyscalls.sh
CHK include/linux/compile.h
Kernel: arch/x86/boot/bzImage is ready (#1)
Building modules, stage 2.
MODPOST 224 modules
ERROR: "function_name_1" [drivers/net/bonding/bonding.ko] undefined!
ERROR: "function_name_2" [drivers/net/bonding/bonding.ko] undefined!
make[1]: *** [__modpost] 오류 1
make: *** [modules] 오류 2
XXX@XXX ~/data/linux-2.6.27.9 $
커널 심볼 테이블에 정보가 없어서 그런것 같은데 2.6.17 커널에서는 잘되던 것이 2.6.27에서는 왜 안될까요?
그리고 어떻게 하면 이 문제를 해결할 수 있나요?
고수님들의 조언 부탁 드립니다. 아무리 구글링을 해봐도 알수가 없네요...


댓글 달기