2
프리 컴파일 된 객체 파일을 사용하는 커널 모듈을 빌드하고 삽입하려하고 있습니다. 사전 컴파일 된 오브젝트 파일이 asm (GNU 어셈블러)으로 컴파일되었습니다.커널 모듈과 프리 컴파일 된 객체의 연결
obj-m += klm.o
klm-objs := a.o
klm.o:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
및 klm.c : 여기
은 메이크입니다#define LINUX
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/slab.h>
extern volatile unsigned long peak_create();
int init_module(void)
{
printk("<1>Hello world 1.\n");
peak_create();
return 0;
}
void cleanup_module(void)
{
printk(KERN_ALERT "Goodbye world 1.\n");
}
EXPORT_SYMBOL_GPL(peak_create);
MODULE_LICENSE("GPL");
하지만이 코 파일을 삽입하기 위해 노력하고있어 때 dmesg를 오류를 보여줍니다 (insmod 명령 klm.ko 사용) :
KLM은 : 알 수없는 기호 peak_create은 (ERR 0)
는 AO의 소스 파일은 글로벌 감속을 포함 peak_create의 에라메이션. (.globl peak_create)
어떻게 커널 모듈에서 peak_create를 사용할 수 있습니까?
감사합니다.