【发布时间】:2012-08-27 11:10:12
【问题描述】:
我正在尝试安装 cython-hidapi 以在我的 Ubuntu 12.04 上读取 USB。我按照https://github.com/gbishop/cython-hidapi 的说明安装了以下版本:
- lib-usb == 1.0.9
- hidapi == 0.7.0
- cython == 0.16
- python == 2.7
- cython-hidapi == 最新结帐
当我从安装中执行测试部分(python > import hid)时,我收到以下错误:
Python 2.7.3 (default, Aug 1 2012, 05:14:39)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import hid
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: /usr/local/lib/python2.7/dist-packages/hid.so: undefined symbol: libusb_open
有谁知道我为什么会收到此错误以及如何检查/处理它?
谢谢! 呜呜呜
【问题讨论】:
-
运行
ldd /usr/local/lib/python2.7/dist-packages/hid.so以显示链接到 hid.so 的库,如果未找到预期的库,它将报告。然后使用nm实用程序打印 libusb 库的符号。nm输出是否显示存在 libusb_open 符号? -
ldd 显示如下:ldd /usr/local/lib/python2.7/dist-packages/hid.so linux-vdso.so.1 => (0x00007fff7d5ff000) libpthread.so.0 = > /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fb3c88f5000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb3c8538000) /lib64/ld-linux-x86 -64.so.2 (0x00007fb3c8d3b000) nm libusb continas libusb_open: 0000000000003b50 T libusb_open
-
我猜。 setup.py 运行正常吗?查看github.com/gbishop/cython-hidapi/blob/master/setup.py,可能是
LDFLAGS与您的平台不匹配,因此构建失败。setup.py似乎是为 i386 架构设置的,您正在使用x86-64。尝试更改setup.py以匹配您的拱门的库路径。 -
设置确实,奇怪的是,没有给出任何错误。你对错误的架构是对的。我已经更改并重新安装了该软件包。可悲的是,我仍然收到相同的错误:-(。
-
这是一个链接器问题。我想 libusb_open 存在于您链接的 libusb 中。但是设置写得不好,并且与usb-1.0明确链接。首先,您必须找到安装在您机器上的 libusb 版本及其所在位置。然后您必须更正 setup.py 中的 include(-I) 和 libs (-L) 路径并运行构建。您还想尝试设置运行时库搜索路径,如下所示: python
setup.py --rpath /to_where/libusb_so/lives build或者在运行 python 之前使用设置它export LD_LIBRARY_PATH =/path/libusb_so/livesbt 这是一个糟糕的方法。