在Linux上编译和安装库后涉及`libusb`的`未定义符号错误`

问题描述 投票:0回答:1

我正在尝试在我的 Linux 计算机上从 github 安装 MCC DAQ 库 (https://github.com/mccdaq/uldaq#build-instructions)。我遵循构建和安装说明,但似乎出现了一些涉及

libusb
的链接错误。当我尝试运行
AIn
示例时,出现
undefined symbol
错误:

./examples/AIn
Found 1 DAQ device(s)
  [0] USB-1608GX: (020D2FF3)

Connecting to device USB-1608GX - please wait ...
/home/dvarx/Downloads/libuldaq-1.2.1/examples/.libs/AIn: symbol lookup error: /home/dvarx/Downloads/libuldaq-1.2.1/src/.libs/libuldaq.so.1: undefined symbol: libusb_has_capability

并且在共享库中找不到有问题的符号:

nm /home/dvarx/Downloads/libuldaq-1.2.1/src/.libs/libuldaq.so.1 | grep libusb_has
                 U libusb_has_capability

运行时

./configure && make
我没有收到任何与
libusb
相关的错误:

...
checking for libusb_init in -lusb-1.0... yes
checking libusb-1.0/libusb.h usability... yes
checking libusb-1.0/libusb.h presence... yes
checking for libusb-1.0/libusb.h... yes
...

我检查过,应该安装了所需的软件包:

apt list --installed | grep libusb

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

libusb-0.1-4/focal,now 2:0.1.12-32 amd64 [installed]
libusb-1.0-0-dev/focal,now 2:1.0.23-2build1 amd64 [installed]
libusb-1.0-0/focal,now 2:1.0.23-2build1 amd64 [installed]
libusb-1.0-0/focal,now 2:1.0.23-2build1 i386 [installed,automatic]
libusb-1.0-doc/focal,focal,now 2:1.0.23-2build1 all [installed,automatic]
libusbmuxd6/focal,now 2.0.1-2 amd64 [installed,automatic]

我注意到的一件事是,如果我尝试列出已安装的 libusb 库中的符号,则不会报告任何符号:

nm /lib/x86_64-linux-gnu/libusb-1.0.so.0
nm: /lib/x86_64-linux-gnu/libusb-1.0.so.0: no symbols

我不太确定如何继续调试这个问题,也许有人知道这个问题的解决方案?

linux makefile linker symbols libusb
1个回答
0
投票

我同时解决了这个问题。问题是这个特定系统上安装了另一个版本的

libusb
,并且
LD_LIBRARY_PATH
包含指向该版本的
libusb
的路径。通过调整后的
LD_LIBRARY_PATH
启动程序解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.