搞基于linux的嵌入式驱动,需要引用很多头文件,有时总是找不到头文件位置,于是学习,总结了一下:
先说头文件位置吧,分两类:
1、用户空间编程使用头文件
就是我们常用的一些:比如
#include
#include
#include
…
头文件位置:/usr/include
2、内核空间编程头文件
那内核中头文件呢?比如以下这些:
#include
#include
#include
#include
#include
#include
…
这里需要加以区分,特别在交叉编译时,更是需要。
2.1、利用自己下载编译的linux内核
显而易见,头文件自己下载的内核里。比如下载了linux-4.19.136版本的内核。
hezaizai@ubuntu: linux-4.19.136$ ls
arch ChangeLog-4.19.136 Documentation include Kconfig LICENSES mm net scripts tools vmlinux
block COPYING drivers init kernel MAINTAINERS modules.builtin README security uImage vmlinux.o
built-in.a CREDITS firmware ipc kernel_fdt.its Makefile modules.order readme.txt sound usr
certs crypto fs Kbuild lib mkimage Module.symvers samples System.map virt
2.2、利用当前pc或服务器linux内核编译
1、确认自己使用的内核
[root@LIN-0495B3719A0 ~]# uname -r
4.19.112-2.el8.x86_64
2、ok,头文件位置就在/lib/modules/4.19.112-2.el8.x86_64/build/
[root@LIN-0495B3719A0 ~]# cd /lib/modules/4.19.112-2.el8.x86_64/build/
arch/ certs/ drivers/ fs/ init/ kernel/ mm/ samples/ security/ tools/ virt/
block/ crypto/ firmware/ include/ ipc/ lib/ net/ scripts/ sound/ usr/
2.3具体位置
那具体在哪个目录下呢?
这里要分情况说明,所以在2.1、2.2没写。比如用的是arm架构(后arm64、x86同理,都在相关体系结构里)所以
#include
#include
#include
#include
一般来说,通用(内核专用)头文件都位于linux-4.19/include/linux下,比如下面这些,编写内核驱动代码要经常用到。
#include
#include
#include
#include
#include
#include
总结还不是很全面,后面慢慢学习,再补充吧!