使用未定义的引用解决Ubuntu开发机器上的链接器加载程序错误

时间:2018-06-08 18:13:22

标签: c++ jenkins linker g++

必须开发系统设置,本地Ubuntu机器和Ubuntu Jenkins服务器。该项目构建在本地开发机器上,但在Jenkins上构建时,我收到以下错误:

g++ -std=gnu++11 -fPIC -o app_bboxd comm_modbus.o bboxes.o -L../lib -lmodbus -lpthread -lrt
comm_modbus.o: In function `COMM_MODBUS__OpenRtu':
/var/lib/jenkins/workspace/cutom-build/trunk/comm_modbus.c:273: undefined reference to `modbus_rtu_set_rts'
collect2: error: ld returned 1 exit status
make[1]: *** [app_bboxd] Error 1

由于某种原因,链接器无法找到该功能。当我使用一些内置命令时,我可以看到库和函数存在:

tes@ubuntu:~/workspace/trunk$ grep -rn -i "modbus_rtu_set_rts" /usr/local/include/modbus
/usr/local/include/modbus/modbus-rtu.h:44:MODBUS_API int modbus_rtu_set_rts(modbus_t *ctx, int mode);

test@ubuntu:~/workspace/trunk$ ls -l /usr/local/lib | grep libmodbus
-rwxr-xr-x 1 root root      919 Jun  8 08:46 libmodbus.la
lrwxrwxrwx 1 root root       18 Jun  8 08:46 libmodbus.so -> libmodbus.so.5.1.0
lrwxrwxrwx 1 root root       18 Jun  8 08:46 libmodbus.so.5 -> libmodbus.so.5.1.0
-rwxr-xr-x 1 root root   121972 Jun  8 08:46 libmodbus.so.5.1.0
test@ubuntu:~/workspace/trunk$

test@ubuntu:~/workspace/trunk$ nm /usr/local/lib/libmodbus.so.5.1.0 | grep modbus_rtu_set_rts
00005a70 T modbus_rtu_set_rts
test@ubuntu:~/workspace/trunk$

可能是什么问题?我怎么弄清楚为什么它在共享对象中找不到这个功能?

0 个答案:

没有答案