【问题标题】:libmodbus: how to compile application including libmodbus library?libmodbus:如何编译包含 libmodbus 库的应用程序?
【发布时间】:2020-11-18 09:05:27
【问题描述】:

我的应用程序编译存在问题,该应用程序基于 libmodbus 库: https://github.com/stephane/libmodbus

我尝试使用以下命令编译它: cc pkg-config --cflags --libs libmodbus modbus.c -o modbus

但我收到以下错误:

/usr/bin/ld: /tmp/cckdtbWy.o: in function `main':
modbus.c:(.text+0x1b): undefined reference to `modbus_new_tcp_pi'
/usr/bin/ld: modbus.c:(.text+0x5c): undefined reference to `modbus_connect'
/usr/bin/ld: modbus.c:(.text+0x8d): undefined reference to `modbus_free'
/usr/bin/ld: modbus.c:(.text+0xa3): undefined reference to `modbus_connect'
/usr/bin/ld: modbus.c:(.text+0xde): undefined reference to `modbus_read_bits'
/usr/bin/ld: modbus.c:(.text+0x11e): undefined reference to `modbus_close'
/usr/bin/ld: modbus.c:(.text+0x12a): undefined reference to `modbus_free'
collect2: error: ld returned 1 exit status

我将不胜感激!

最好的问候!

【问题讨论】:

    标签: c linux modbus libmodbus


    【解决方案1】:

    您是否安装了libmodbus-dev?你应该试试这个:sudo apt-get install -y libmodbus-dev

    参见 v3.1.6 和 v3.0.8:libmodbus docs

    【讨论】:

    • 我还没有看到有这样的选项。文档没有给人留下深刻印象,而且信息不足。无论如何,我已经使用 pkg-config --libs --cflags libmodbus 编译了我的应用程序,但问题是,我可以使用其他 CFLAGS 并在编译时包含其他目录吗?我当然会检查,但我想知道--cflags参数下隐藏了什么。
    【解决方案2】:

    我已经解决了这个问题,我的解决方案是:

    1./etc/ld.so.conf.d/中创建modbus.conf文件。

    2.运行sudo ldconfig

    3. 使用以下命令编译您的应用程序/程序:

    gcc <name>.c -o <name> -I/usr/local/include/modbus/ -lmodbus

    它对我有用,但我不确定第一步是否必要。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-26
      • 2013-04-05
      • 1970-01-01
      • 2016-06-13
      • 2022-09-28
      • 2017-03-06
      • 1970-01-01
      • 2020-02-27
      相关资源
      最近更新 更多