当前位置:   article > 正文

【Linux驱动层】iTOP-RK3568学习之路(一):在RK3568上编译内核模块

【Linux驱动层】iTOP-RK3568学习之路(一):在RK3568上编译内核模块

在RK3568上编译内核模块

  1. helloword.c
#include<linux/module.h>
#include<linux/init.h>
#include<linux/kernel.h>

static int helloworld_init(void){
    printk("helloworld!\n");
    return 0;
}

static void helloworld_exit(void){
    printk("helloworld bye!\n");
}


module_init(helloworld_init);
module_exit(helloworld_exit);


MODULE_LICENSE("GPL");
MODULE_AUTHOR("ZSY");
MODULE_VERSION("V1.0");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  1. Makefile
# 这两个export只对当前终端有效
export ARCH=arm64
export CROSS_COMPILE=/home/topeet/source/linux/rk356x_linux/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-
obj-m += helloworld.o
KDIR := /home/topeet/source/linux/rk356x_linux/kernel
PWD ?= $(shell pwd)
all:
	make -C $(KDIR) M=$(PWD) modules
clean:
	rm -f *.ko *.o *.mod.o *.mod.c *.symvers *.order 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  1. 为什么在有的板子上不用设置ARCH和CROSS_COMPILE环境变量?

在Linux源码的顶层目录下,有一个Makefile文件,这个Makefile文件控制着Linux的编译流程。也叫做顶层Makefile文件。
在顶层Makefile中有ARCH和CROSS_COMPILE变量。如果我们在顶层Makefile中固定了这俩个变量的值,就不用在编译ko文件的时候再次设置。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/450665
推荐阅读
相关标签
  

闽ICP备14008679号