社区
驱动程序开发区
帖子详情
linux怎么在应用层中使用内核头文件
lengtianxiong
2017-12-29 08:13:58
我写了一个关于内核sock的面向对象的代码其中在CPP文件中使用内核头文件#include <linux/inet.h>时会报:没有那个文件或目录,不加相关头文件在使用内核函数会报:函数不在这个范围中声明的错误,请求解答
...全文
1961
4
打赏
收藏
linux怎么在应用层中使用内核头文件
我写了一个关于内核sock的面向对象的代码其中在CPP文件中使用内核头文件#include 时会报:没有那个文件或目录,不加相关头文件在使用内核函数会报:函数不在这个范围中声明的错误,请求解答
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
幽饮烛
2018-01-19
打赏
举报
回复
考虑用 netinet/in.h 而不要用 linux/inet.h
Creator_莫言
2018-01-02
打赏
举报
回复
你想获取内核的socket数据,可以建立一块共享内存,将接收到的数据写入共享内存,然后应用程序再进行访问。
lengtianxiong
2018-01-02
打赏
举报
回复
struct kvec vec ,struct msghdr msg,struct socket *listen_sock,listen_sock->ops->accept() ,kernel_recvmsg()
坤昱
2017-12-30
打赏
举报
回复
你调用的是哪个函数,有的函数需要在驱动里调用
Linux
设备树(device tree)
设备树(device tree)机制是
Linux
内核
从
linux
-3.x版本开始引进的一种机制,目的是解决
内核
源码的arch/arm目录下代码混乱的问题:随着ARM生态的快速发展,在
内核
源码的arch/arm目录下,存放着几十种arm芯片和几百个开发板相关的源文件,很多开发板和处理器的
中
断、寄存器等相关硬件资源都在这个目录下以.c或.h的文件格式定义。而对于
内核
来说,与这些硬件耦合,会导致
内核
代码混乱不堪,每个开发板上运行的
内核
镜像都必须单独编译配置,无法通用。什么时候
Linux
内核
能像Windows镜像那样,无论你的电脑什么配置,一个Windows安装包,都可以直接下载安装运行呢?设备树机制,实现了
Linux
内核
和硬件平台的解耦:每个硬件平台的硬件资源
使用
一个设备树文件(xxx.dts)来描述,而不是在arch/arm下以.c 或 .h 文件来定义。
Linux
内核
是一个通用的
内核
,在启动过程
中
,在通过解析设备树
中
的硬件资源来初始化某个具体的平台。 引入设备树后,很多和
内核
驱动开发的工作也发生了变化:以往驱动工程师关注的
头文件
宏定义、寄存器定义,现在这些基本上不用关注,关注的重点则转向了如何根据硬件平台去配置和修改设备树文件。很多驱动的编程接口也发生了变化,开始慢慢
使用
device tree提供的编程接口去开发驱动。本期课程主要面向嵌入式开发人员,分享
Linux
下驱动开发所需要的设备树知识和必备技能
用户空间
使用
内核
头文件
在用户空间
使用
内核
头文件
(或模块)有两种方法: 1. 将
内核
头文件
和相应模块移植到移植到用户层,在用户空间重新编译
使用
。 2. 在编译时
使用
-I/lib/modules/$(uname -r)/build/include选项 方法1比较麻烦,需要做些移植工作,但是肯定能成功。比如可以将
内核
的list.h链表移植到用户空间。 方法2可能会遇到一些错误,比如重复定义等,而且很难解决...
linux
内核
头文件
设计,
linux
内核
头文件
及
内核
库文件
与用户空间应用不同的是,
内核
不能调用标准C库或其它任何不属于
内核
的库。主要原因是,速度及大小的限制。标准C库对
内核
而言实在是太大了。许多常用的的 libc 函数已经在
内核
中
实现了。
内核
中
的库文件是在
内核
的根目录下 lib 目录下存放。如常用的字符串操作函数是在 lib/string.c
中
定义的,调用时主需要将
头文件
包含进即可。关于
内核
的
头文件
,
内核
是不能包含
内核
之外的
头文件
的,如同
内核
不能调用...
Linux
中
头文件
的目录
关于
Linux
中
头文件
的目录,分为两类:一类是
内核
源码
中
的
头文件
,比如驱动
中
包含的
头文件
;一类是应用软件
中
包含的
头文件
。这两类默认放的位置不同。 (1)
内核
源码
头文件
在
内核
源码目录下include文件夹
中
。 比如 #include<
linux
/init.h> 该文件的路径和文件名即: /include/
linux
/init.h (2)
应用层
代码包含的
头文件
在
内核
源码目...
linux
下编译代码时的默认
头文件
路径
1 应用编程、驱动源代码
中
的
头文件
1.1 应用编程
中
包含的
头文件
是
应用层
的
头文件
,是应用程序的编译器带来的 1.1.1 编译windows下的应用程序时 1)
使用
<>包含的
头文件
一般会先搜索-I选项后的路径(即用gcc编译时的-I选项),之后就是标准的系统
头文件
路径。 2)而用""号包含的
头文件
会首先搜索当前的工作目录,之后的搜索路径才是...
驱动程序开发区
1,317
社区成员
2,173
社区内容
发帖
与我相关
我的任务
驱动程序开发区
主要是开发驱动技术
复制链接
扫一扫
分享
社区描述
主要是开发驱动技术
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章