首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C-使用硬编码库的引用进行编译时出错

C-使用硬编码库的引用进行编译时出错
EN

Stack Overflow用户
提问于 2021-03-23 23:58:35
回答 1查看 37关注 0票数 0

我正在尝试编译一个使用libmodbus库的C程序。这个库已经安装在系统上,引用属于modbus.h,它在main上以这种方式硬编码:

代码语言:javascript
复制
#include </usr/include/modbus/modbus.h>

单独的编译不会产生错误:

代码语言:javascript
复制
$ gcc -Wall -c mbpoll.c
mbpoll.c:186:19: aviso: se define ‘sTcpPortStr’ pero no se usa [-Wunused-const-variable=]
  186 | static const char sTcpPortStr[] = "tcp port";
      |                   ^~~~~~~~~~~
$ gcc -Wall -c custom-rts.c
$ gcc -Wall -c serial.c

但是最终的构建是这样的:

代码语言:javascript
复制
$ gcc -Wall -o myprog mbpoll.o custom-rts.o serial.o 
/usr/bin/ld: mbpoll.o: en la función `main':
mbpoll.c:(.text+0xde5): referencia a `modbus_new_rtu' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xe4c): referencia a `modbus_new_tcp_pi' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xe91): referencia a `modbus_set_debug' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xeda): referencia a `modbus_rtu_set_serial_mode' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xef1): referencia a `modbus_rtu_set_rts' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xf00): referencia a `modbus_connect' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xf14): referencia a `modbus_free' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xf22): referencia a `modbus_strerror' sin definir
/usr/bin/ld: mbpoll.c:(.text+0xfb8): referencia a `modbus_set_response_timeout' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x109d): referencia a `modbus_set_slave' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x10e7): referencia a `modbus_write_bit' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1108): referencia a `modbus_write_bits' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1142): referencia a `modbus_write_register' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1164): referencia a `modbus_write_registers' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x11ba): referencia a `modbus_strerror' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1222): referencia a `modbus_set_slave' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x12f7): referencia a `modbus_read_input_bits' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1318): referencia a `modbus_read_bits' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1339): referencia a `modbus_read_input_registers' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x135a): referencia a `modbus_read_registers' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x13c1): referencia a `modbus_strerror' sin definir
/usr/bin/ld: mbpoll.o: en la función `vReportSlaveID':
mbpoll.c:(.text+0x1708): referencia a `modbus_set_slave' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x178b): referencia a `modbus_report_slave_id' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x17a8): referencia a `modbus_strerror' sin definir
/usr/bin/ld: mbpoll.o: en la función `vSigIntHandler':
mbpoll.c:(.text+0x1e1d): referencia a `modbus_close' sin definir
/usr/bin/ld: mbpoll.c:(.text+0x1e2c): referencia a `modbus_free' sin definir
collect2: error: ld devolvió el estado de salida 1

这些参考资料在libmodbus库中。

问题出在哪里?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-24 00:06:14

当链接到外部库时,需要使用-l选项传入库的名称:

代码语言:javascript
复制
gcc -Wall -o myprog mbpoll.o custom-rts.o serial.o -lmodbus
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66766780

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档