【问题标题】:libgpiod API usage (Linux shared libraries)libgpiod API 使用(Linux 共享库)
【发布时间】:2020-04-13 11:09:00
【问题描述】:

有人对 libgpiod API 有任何经验吗?我已将它安装在我的 linux 平台上,但无法调用它的库函数。

我安装者:

git clone git://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
cd libgpiod
./autogen.sh
make
make install

之后,我在 /usr/local/lib/ 中看到 libgpiod.so 库,在 / 中看到 gpiod.h 库usr/local/include/ (我也跑了ldconfig)。但是,当我尝试编译以下内容时:

test.c

#include <gpiod.h>

struct gpio_chip *chip;    

int main(void)
{
    chip = gpio_chip_open("/dev/gpiochip4");
    return 0;
}

我收到以下错误:undefined reference to 'gpiod_chip_open'

谁能帮我看看哪里出错了?

非常感谢!

【问题讨论】:

  • 你是怎么编译的?命令?
  • 使用gcc test.c
  • 没有链接?试试看:gcc -lgpiod test.c
  • 谢谢!即编译。但是当我跑步时,我被告知cannot open shared object file: No such file or directory ...
  • libgpiod 是所有主要 Linux 发行版的一部分。为什么要自己编译? (是的,我有这方面的经验,但我自己从未编译过libgpiod)

标签: c api embedded-linux gpio dynamic-library


【解决方案1】:

您错过了与-l 标志链接的库。

这样编译:

gcc -lgpiod test.c

此外,如果 SO 文件是自定义文件,您可能还需要配置运行时路径。有关运行时共享对象位置的更多详细信息,请参阅此thread。

【讨论】:

    【解决方案2】:

    请试试这个命令:

    先安装库:

    sudo apt-get install -y libgpiod-dev
    

    编译命令:

    gcc GPIO_LED.c -o led_read_status -lgpiod
    

    以 root 用户身份运行。

    另外你可以使用gpio工具调试GPIO:

    1. gpiodetect
    2. gpioinfo
    3. gpioset
    4. gpiget

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多