Makefile을 사용하여 LKM 생성

Makefile을 사용하여 LKM 생성

최근에 저는 운영 체제 커널에 대해 배우기로 결정했고 학습 과정에 도움이 되는 몇 가지 리소스를 찾았습니다. 튜토리얼에 따라 로드 가능한 커널 모듈과 Makefile을 설정했지만 명령을 실행하면 make다음과 같은 결과가 나타납니다. Makefile:5: *** missing separator. Stop.

메이크파일 내용 -

KMOD=   hello   #Name of KLD build.
SRCS=   hello.c # List of source files.
include <bsd.kmod.mk>

LKM 소스-

#include <sys/param.h>
#include <sys/module.h>
#include <sys/kernel.h>
#include <sys/systm.h>

/*The function called at load/unload. */
static int
load(struct module *module, int cmd, void *arg)
{
    int error = 0;

    switch (cmd) {
    case MOD_LOAD:
        uprintf("Hello, world!\n");
        break;
        
    case MOD_UNLOAD:
        uprintf("Good-bye, cruel world!\n");
        break;
        
    default:
        error = EOPNOTSUPP;
        break;
    }
}

/* The second argument of DECLARE_MODULE. */
static moduledata_t hello_mod = {
    "hello",    /*module name */
    load,       /* event handler */
    NULL        /* extra data */
};

DECLARE_MODULE(hello, hello_mod, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);

내가 읽고 있는 책은 커널을 변경하기 위해 Ubuntu 시스템으로 이식한 FreeBSD 커널 모듈에 중점을 두고 있습니다.

도와주세요! !

답변1

내가 읽고 있는 책은 커널을 변경하기 위해 Ubuntu 시스템으로 이식한 FreeBSD 커널 모듈에 중점을 두고 있습니다.

두 커널이 매우 다르고 빌드 인프라도 다르기 때문에 이는 곧 유용한 결과를 생성할 가능성이 낮습니다. 대신 다음과 같은 Linux 관련 튜토리얼을 따르십시오.이것.

관련 정보