在arm-elf交叉编译中包含lib:undefined reference

时间:2014-08-18 23:20:04

标签: gcc arm cross-compiling

所以,我正在尝试使用arm-elf交叉编译器使用libmodbus构建一个小程序,并且我不断为libmodbus获取未定义的引用错误,即使它是为交叉编译器和lib文件夹构建的。

我已经构建了libmodbus

./configure --host=arm-elf --prefix=/usr/local/arm-elf
make && make install

然后,我编写了我的程序,确保包含modbus标题

#include <modbus/modbus.h>

并编译它

arm-elf-gcc  -o modbus_read_register  -Wl,-elf2flt -v -lmodbus modbus_read_register.c

但总是失败,我认为是连接阶段

/usr/local/lib/gcc-lib/arm-elf/2.95.3/collect2 -X -o modbus_read_register /usr/local/arm-elf/lib/crt0.o -L/usr/local/lib/gcc-lib/arm-elf/2.95.3 -L/usr/local/arm-elf/lib -elf2flt -lmodbus /tmp/cc000Bvc.o -lgcc -lc -lgcc
modbus_read_register.elf2flt(.text+0x88): In function `main':
: undefined reference to `modbus_new_tcp'
modbus_read_register.elf2flt(.text+0x98): In function `main':
: undefined reference to `modbus_connect'
modbus_read_register.elf2flt(.text+0xb0): In function `main':
: undefined reference to `modbus_strerror'
modbus_read_register.elf2flt(.text+0xcc): In function `main':
: undefined reference to `modbus_free'
modbus_read_register.elf2flt(.text+0x11c): In function `main':
: undefined reference to `modbus_read_registers'
modbus_read_register.elf2flt(.text+0x13c): In function `main':
: undefined reference to `modbus_strerror'
modbus_read_register.elf2flt(.text+0x1cc): In function `main':
: undefined reference to `modbus_close'
modbus_read_register.elf2flt(.text+0x1d4): In function `main':
: undefined reference to `modbus_free'
collect2: ld returned 1 exit status
make: *** [modbus_read_register] Error 1

我无法弄清楚链接器无法正常工作的原因,因为libmodbus.a文件位于正确的路径并且在args中提供。

1 个答案:

答案 0 :(得分:2)

由于您的libmodbus包安装在前缀提供的位置,即

  

- 前缀= <强>的/ usr /本地/臂精灵

编译程序时应指定此路径 modbus_read_register.c

  

arm-elf-gcc -o modbus_read_register -Wl,-elf2flt -v -lmodbus modbus_read_register.c
  的 -L / USR /本地/臂精灵/ lib中

此处-L选项将重定向链接器以搜索指定目录中的文件