我正在使用GUI的PyQt为我的AVR板。我想在我的应用程序中实现dfu-programmer引导程序,所以我可以在里面使用它。 我使用以下命令生成了libdfu.so(并复制到我的/ usr / lib中):
gcc -shared -Wl,-soname,libdfu -o libdfu.so -fPIC arguments.o main.o commands.o dfu.o atmel.o util.o intel_hex.o
所有目标文件都来自dfu-programmer来源,我真的不知道这是不是这样做的好办法。 我试图在这里使用testlib.py加载库:
import ctypes
testlib = ctypes.CDLL('libdfu.so')
testlib.usage()
它给了我这个错误:
$ python teslib.py
Traceback (most recent call last):
File "teslib.py", line 3, in <module>
testlib = ctypes.CDLL('libdfu.so')
File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: /usr/lib/libdfu.so: undefined symbol: usb_init
我还尝试在库之前导入libusb-1.0.so,因为bootloader使用它但它不起作用(同样的错误)......
任何解决方案? 感谢。
答案 0 :(得分:0)
我发现了问题,它是与libusb.so的依赖关系。 为了发出这个,我设置了LDFLAGS和CPPFLAGS(分别到/ usr / lib和/ usr / include目录),并将-libusb选项添加到我以前的命令中:
gcc -shared -Wl,-soname,dfulib.so.1 -o dfulib.so.1.0.1 arguments.o commands.o atmel.o dfu.o intel_hex.o main.o util.o -lusb -ldl
感谢。 :)(希望它可以再帮助一个人)