linux驱动开发 重要知识点,C/C++知识点之linux 驱动开发

本文主要向大家介绍了C/C++知识点之linux 驱动开发,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

0efe973a455c1d7752aea9b0f7d8d2f5.png

1.安装 linux2.写 hello world//hello.c#include  /*Needed by all modules*/#include  /*Needed for KERN_* */#include  /* Needed for the macros */MODULE_LICENSE(""GPL"");static int year=2014;static int hello_init(void){

printk(KERN_WARNING ""Hello kernel, it's %d!\n"",year);  return 0;

}static void hello_exit(void){

printk(""Bye, kernel!\n"");

}/* main module function*/module_init(hello_init);

module_exit(hello_exit);

obj-m := hello.o    表示编译成模块,后面写对应文件名称加.oMakefileobj-m  := hello.o

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD       := $(shell pwd)all:    $(MAKE) -C $(KERNELDIR) M=$(PWD)clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

安装模块命令 insmod ./hello.ko删除 rmmod ./hello.ko 用命令 tail /var/log/kern.log查看日志root@ubuntu:~/Desktop# makemake -C /lib/modules/4.2.0-27-generic/build M=/root/Desktop

make[1]: Entering directory `/usr/src/linux-headers-4.2.0-27-generic'

LD      /root/Desktop/built-in.o

CC [M]  /root/Desktop/hello.o

Building modules, stage 2.

MODPOST 1 modules

CC      /root/Desktop/hello.mod.o

LD [M]  /root/Desktop/hello.ko

make[1]: Leaving directory `/usr/src/linux-headers-4.2.0-27-generic'

root@ubuntu:~/Desktop# insmod ./hello.ko

root@ubuntu:~/Desktop# tail /var/log/kern.logAug 26 05:54:38 ubuntu kernel: [   11.882941] audit: type=1400 audit(1535288078.331:11): apparmor=""STATUS"" operation=""profile_load"" profile=""unconfined"" name=""/usr/lib/lightdm/lightdm-guest-session"" pid=825 comm=""apparmor_parser""Aug 26 05:54:38 ubuntu kernel: [   12.138198] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

Aug 26 05:54:38 ubuntu kernel: [   12.423300] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

Aug 26 05:54:38 ubuntu kernel: [   12.436023] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Aug 26 05:55:05 ubuntu kernel: [   39.322268] audit_printk_skb: 150 callbacks suppressed

Aug 26 05:55:05 ubuntu kernel: [   39.322272] audit: type=1400 audit(1535288105.459:62): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/lib/cups/backend/cups-pdf"" pid=2171 comm=""apparmor_parser""Aug 26 05:55:05 ubuntu kernel: [   39.322282] audit: type=1400 audit(1535288105.459:63): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/sbin/cupsd"" pid=2171 comm=""apparmor_parser""Aug 26 05:55:05 ubuntu kernel: [   39.322809] audit: type=1400 audit(1535288105.459:64): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/sbin/cupsd"" pid=2171 comm=""apparmor_parser""Aug 26 06:15:14 ubuntu kernel: [ 1248.118385] hello: module verification failed: signature and/or required key missing - tainting kernel

Aug 26 06:15:14 ubuntu kernel: [ 1248.121354] Hello kernel, it's 2014!

root@ubuntu:~/Desktop# rmmod ./hello.ko

root@ubuntu:~/Desktop# tail /var/log/kern.logAug 26 05:54:38 ubuntu kernel: [   12.138198] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready

Aug 26 05:54:38 ubuntu kernel: [   12.423300] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None

Aug 26 05:54:38 ubuntu kernel: [   12.436023] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

Aug 26 05:55:05 ubuntu kernel: [   39.322268] audit_printk_skb: 150 callbacks suppressed

Aug 26 05:55:05 ubuntu kernel: [   39.322272] audit: type=1400 audit(1535288105.459:62): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/lib/cups/backend/cups-pdf"" pid=2171 comm=""apparmor_parser""Aug 26 05:55:05 ubuntu kernel: [   39.322282] audit: type=1400 audit(1535288105.459:63): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/sbin/cupsd"" pid=2171 comm=""apparmor_parser""Aug 26 05:55:05 ubuntu kernel: [   39.322809] audit: type=1400 audit(1535288105.459:64): apparmor=""STATUS"" operation=""profile_replace"" profile=""unconfined"" name=""/usr/sbin/cupsd"" pid=2171 comm=""apparmor_parser""Aug 26 06:15:14 ubuntu kernel: [ 1248.118385] hello: module verification failed: signature and/or required key missing - tainting kernel

Aug 26 06:15:14 ubuntu kernel: [ 1248.121354] Hello kernel, it's 2014!

Aug 26 06:16:13 ubuntu kernel: [ 1306.921227] Bye, kernel!

root@ubuntu:~/Desktop#

出现的问题1.用 ide 可能报找不到#include 等头文件 确实 include里面没有这个没关系 因为有内核源码先查看内核版本root@ubuntu:~/Desktop# uname -r4.2.0-27-generic

root@ubuntu:~/Desktop#

再写 makefile 文件时用$(shell uname -r) 就可以了

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值