我正在尝试编译imx_usb_loader以在Windows上使用它,而我正在使用MinGW64。
我从这里下载imx_usb_loader项目开始: link
从项目自述文件开始,我们使用以下命令进行编译:
mingw32-make -f Makefile.mingw LIBUSBPATH=C:\path\to\libusb
所以我从这里下载libusb-1.0.22.7z: link
从存档的README.txt文件中,我们可以看到有关MinGW的说明:
- 将libusb.h从include / libusb-1.0 /复制到默认的include目录,然后将MinGW32 /或MinGW64 / .a文件复制到默认库目录。或者,如果您不想使用默认位置,请确保将相关的-I和-L选项提供给编译器。
- 在编译时添加“ -lusb-1.0”链接器选项。
所以我像这样从存档中解压缩文件:
然后尝试使用此命令编译imx_usb_loader:
mingw32-make -f Makefile.mingw -lusb-1.0
我猜是由于gcc找不到库导致的一堆错误:
$ mingw32-make -f Makefile.mingw -lusb-1.0
gcc -o imx_usb imx_usb.o imx_sdp.o -L\MinGW32\dll -lusb-1.0
imx_usb.o: In function `print_devs':
C:\Projects\imx_usb_loader-master/imx_usb.c:63: undefined reference to `libusb_get_device_descriptor@8'
C:\Projects\imx_usb_loader-master/imx_usb.c:69: undefined reference to `libusb_get_config_descriptor@12'
C:\Projects\imx_usb_loader-master/imx_usb.c:73: undefined reference to `libusb_get_device_address@4'
C:\Projects\imx_usb_loader-master/imx_usb.c:73: undefined reference to `libusb_get_bus_number@4'
C:\Projects\imx_usb_loader-master/imx_usb.c:89: undefined reference to `libusb_free_config_descriptor@4'
imx_usb.o: In function `parse_imx_mach':
C:\Projects\imx_usb_loader-master/imx_usb.c:103: undefined reference to `get_val'
C:\Projects\imx_usb_loader-master/imx_usb.c:109: undefined reference to `get_val'
C:\Projects\imx_usb_loader-master/imx_usb.c:125: undefined reference to `move_string'
imx_usb.o: In function `find_imx_dev':
C:\Projects\imx_usb_loader-master/imx_usb.c:195: undefined reference to `libusb_get_bus_number@4'
C:\Projects\imx_usb_loader-master/imx_usb.c:196: undefined reference to `libusb_get_device_address@4'
C:\Projects\imx_usb_loader-master/imx_usb.c:198: undefined reference to `libusb_get_device_descriptor@8'
imx_usb.o: In function `transfer_hid':
........
collect2.exe: error: ld returned 1 exit status
Makefile.mingw:17: recipe for target 'imx_usb' failed
mingw32-make: *** [imx_usb] Error 1
我试图将.a和.dll文件移动到其他位置,但是没有成功。有人可以解释如何正确解包/绑定libusb吗? 谢谢。