Ubuntu 18.04.6 LTS用户空间pmbus.h缺失的解决方法咨询
在Ubuntu 18.04.6 LTS用户空间使用pmbus.h的问题
我在Ubuntu 18.04.6 LTS用户空间尝试使用pmbus.h,但该文件不存在于/usr/include/路径下,无法直接引用。想知道是否需要通过类似smbus的库来引入头文件,或者有其他用户空间可用的方法。
已做尝试
- 执行
dpkg -S pmbus.h查找文件,输出结果如下:
linux-headers-5.4.0-150-generic: /usr/src/linux-headers-5.4.0-150-generic/include/config/pmbus.h linux-headers-5.4.0-148-generic: /usr/src/linux-headers-5.4.0-148-generic/include/config/sensors/pmbus.h linux-headers-5.4.0-150-generic: /usr/src/linux-headers-5.4.0-150-generic/include/config/sensors/pmbus.h linux-hwe-5.4-headers-5.4.0-150: /usr/src/linux-hwe-5.4-headers-5.4.0-150/include/linux/pmbus.h linux-headers-4.15.0-213-generic: /usr/src/linux-headers-4.15.0-213-generic/include/config/sensors/pmbus.h linux-headers-4.15.0-213-generic: /usr/src/linux-headers-4.15.0-213-generic/include/config/pmbus.h linux-hwe-5.4-headers-5.4.0-148: /usr/src/linux-hwe-5.4-headers-5.4.0-148/include/linux/pmbus.h linux-headers-4.15.0-213: /usr/src/linux-headers-4.15.0-213/include/linux/pmbus.h linux-headers-5.4.0-148-generic: /usr/src/linux-headers-5.4.0-148-generic/include/config/pmbus.h
所有找到的文件均位于内核头文件路径下,没有用户空间可用的版本。
2. 执行sudo apt-file -x search '/pmbus.h$',未返回任何结果。
解决方案
1. 优先使用用户空间专用库
pmbus.h是内核空间的头文件,没有对应的用户空间开发包,因此不能直接在用户空间程序中引用。推荐使用以下成熟的用户空间库来实现PMBus相关操作:
- lm-sensors开发库:安装
libsensors4-dev包,它提供了封装好的传感器访问接口,支持PMBus设备。安装命令:sudo apt install libsensors4-dev - I2C/SMBus底层库:安装
libi2c-dev包,通过SMBus协议直接实现PMBus操作(PMBus是SMBus的扩展协议)。安装命令:sudo apt install libi2c-dev
2. 临时方案(不推荐)
如果必须使用内核pmbus.h中的定义,可以从内核头文件路径(比如/usr/src/linux-hwe-5.4-headers-5.4.0-150/include/linux/pmbus.h)复制该文件到项目目录,编译时指定包含路径。但要注意:内核头文件依赖大量内核环境定义,直接在用户空间使用可能出现编译错误,需手动提取所需的宏或结构体,不建议用于生产环境。
内容的提问来源于stack exchange,提问作者demzys
相关产品推荐
相关产品推荐

