반응형

 

먼저 라즈베리파이2에 설치되어 있는 커널의 버전을 확인해보고

 

아래 명령으로 같은 버전의 커널 헤더가 있는지 확인해봤습니다.

sudo apt-cache search linux-headers-$(uname -r)

 

하지만 버전에 맞는 커널 헤더가 저장소에 없어서 따로 다운로드 받아서 설치했습니다.

sudo apt-get update

sudo apt-get install gcc-4.7 cpp-4.7 dkms

wget http://www.niksula.hut.fi/~mhiienka/Rpi/linux-headers-rpi/linux-headers-3.18.11-v7%2B_3.18.11-v7%2B-2_armhf.deb

sudo dpkg -i linux-headers-3.18.11-v7+_3.18.11-v7+-2_armhf.deb

 

 

 

설치 후.. 간단한 모듈 프로그램을 작성해서 테스트해봅니다.

 

작성한 모듈 프로그램 소스코드입니다.

  1. #include <linux/init.h>  
  2. #include <linux/module.h>  
  3. #include <linux/kernel.h>  
  4.     
  5.     
  6. static int __init hello_init(void)  
  7. {  
  8.    printk(KERN_INFO "Hello world\n");  
  9.     
  10.    return 0;  
  11. }  
  12.     
  13.     
  14. static void __exit hello_exit(void)  
  15. {  
  16.    printk(KERN_INFO "Goodbye world");  
  17. }  
  18.     
  19. module_init(hello_init);  
  20. module_exit(hello_exit);  

 

컴파일시 필요한 Makefile입니다.

  1. obj-m+=hello.o  
  2.     
  3. ARCH :=arm  
  4. PWD := $(shell pwd)  
  5.     
  6. all:  
  7.         make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) ARCH=$(ARCH) modules  
  8.     
  9. clean:  
  10.         make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) ARCH=$(ARCH) clean  

 

이제 컴파일을 해봅니다.

 

실행 결과입니다.

 

 

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts