我正在尝试在Debian(Jessie)上编译mphidflash之后重写低级USB接口与libhidapi-libusb而不是libhid(Debian不再支持)对话但是我'我得到一些编译错误,我不知道该怎么做。
这些是usb-linux.c
中包含的内容:
#include <stdio.h>
#include <usb.h>
#include <hidapi/hidapi.h>
#include "mphidflash.h"
#include <errno.h>
以下是我尝试过的错误:
$ gcc main.o hex.o usb-linux.o -lusb -lhidapi-libusb -o mphidflash
/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/libhidapi-libusb.so: undefined reference to `libusb_handle_events_completed'
collect2: error: ld returned 1 exit status
$ gcc main.o hex.o usb-linux.o /usr/lib/x86_64-linux-gnu/libhidapi-libusb.a -lusb -lhidapi-libusb -o mphidflash
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libhidapi-libusb.a(hid.o): undefined reference to symbol 'libusb_detach_kernel_driver'
//usr/local/lib/libusb-1.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
基本上,我得到一个undefined reference to symbol 'libusb_detach_kernel_driver'
,这表明我错误地包含了libusb库,但我不知道还有什么可以尝试。
答案 0 :(得分:0)
原来hidapi-libusb使用libusb-1.0而不是libusb-0.1(两者都可以在Debian上安装)。
我将包含更改为:
#include <stdio.h>
#include <libusb-1.0/libusb.h>
#include <hidapi/hidapi.h>
#include "mphidflash.h"
#include <errno.h>
编译:
$ gcc main.o hex.o usb-linux.o -lusb-1.0 -lhidapi-libusb -o mphidflash
我会将我的更改放入git repo中,并在我完成后发布链接。