Linux에서 장치용 드라이버를 작성했습니다. 커널에 삽입할 수 있도록 파일을 생성(사용 gcc
) 하는 방법은 무엇입니까 ?.ko
답변1
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) $@
endif
모듈의 소스 코드가 있다고 가정하면 mymodule.c
실행하면 make
가 생성됩니다 mymodule.ko
.
답변2
짧은 대답: 할 수 없습니다. .ko 파일은 드라이버 소스의 컴파일된 버전이 아닙니다. 커널 빌드 시스템에는 (컴파일러 버전, 모듈 종속성...)과 같은 몇 가지 추가 정보가 포함되어 있습니다.
필요한 모든 작업을 찾기 위해 커널 빌드 시스템을 자세히 조사할 수도 있지만 그렇게 해서는 안 됩니다. 다음 커널 버전 이상에서는 거의 확실하게 중단될 것입니다. 제공된 makefile ehemient를 사용해야 합니다.