dbus-sensors与libgpiod

1 开发平台

Win11、VS2022、Fedora39。

2 debus-sensors简介

以下摘自openbmc/dbus-sensors: D-Bus configurable sensor scanning applications (github.com):

dbus-sensors is a collection of sensor applications that provide the

xyz.openbmc_project.Sensor collection of interfaces. They read sensor values

from hwmon, d-bus, or direct driver access to provide readings. Some advance

non-sensor features such as fan presence, pwm control, and automatic cpu

detection (x86) are also supported.

3 作业目的

通过VS2022跨平台Linux构建dbus-sensors的x64可执行模块。

4 问题描述

在vs2022中的链接报错如下:

ADCSensor.hpp(47): error : undefined reference to `gpiod::line::operator bool() const'

ADCSensor.hpp:51: undefined reference to `gpiod::line::set_value(int) const'

ADCSensor.hpp:23: undefined reference to `gpiod::find_line(std::__cxx11::basic_string, std::allocator > const&)'

都与gpiod有关。

5 解决方法

用meson构建dbus-sensors时自动下载了libgpiod-1.6.3的源码,用ninja编译生成了libgpiod.so和libgpiodcxx.so。

在这两个库中搜到了find_line等函数名。在vs2022中指定链接的也是这两个库。

最终发现,vs2022链接的实际是fedora39中/usr/lib64中的libgpiod,这是通过dnf命令安装的,其版本是2.0.2,库里没有find_line等函数名。

卸载这个库后解决问题。

你可能感兴趣的:(OpenBMC)