我正在尝试在我的 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
我不太确定如何继续调试这个问题,也许有人知道这个问题的解决方案?
我同时解决了这个问题。问题是这个特定系统上安装了另一个版本的
libusb
,并且 LD_LIBRARY_PATH
包含指向该版本的 libusb
的路径。通过调整后的LD_LIBRARY_PATH
启动程序解决了这个问题。