it-swarm-ko.tech

Linux에서 .ko 파일을 만드는 방법

Linux에서 하나의 장치에 대해 하나의 드라이버를 작성했습니다. 커널에 삽입 할 수 있도록 .ko 파일을 어떻게 생성 (gcc 사용) 할 수 있습니까?

9
Renjith G

이와 같은 Makefile을 (를) 만듭니다.

ifneq ($(KERNELRELEASE),)
obj-m   := mymodule.o
else
KDIR    := /lib/modules/$(Shell uname -r)/build
PWD     := $(Shell pwd)
all:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
install:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules_install
%:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) [email protected]
endif

모듈의 소스가 mymodule.c에 있다고 가정하고 make를 실행하면 mymodule.ko가 생성됩니다.

9
ephemient

짧은 대답 : 할 수 없습니다. .ko 파일은 드라이버 소스의 컴파일 된 버전 이상입니다. 커널 빌드 시스템에는 인스턴스 (컴파일러 버전, 모듈 종속성 등)에 대한 추가 정보가 포함되어 있습니다.

필요한 모든 작업을 찾기 위해 커널 빌드 시스템을 살펴볼 수는 있지만 그렇게해서는 안됩니다. 다음 커널 릴리스 또는 그 이후 릴리스에서 거의 확실하게 중단됩니다. 제공된 makefile ephemient를 사용해야합니다.

2
Kristof Provost