使用MinGW为Windows编译imx_usb_loader:libusb问题

时间:2019-04-18 14:09:11

标签: windows mingw libusb mingw32

我正在尝试编译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”链接器选项。
  •   

所以我像这样从存档中解压缩文件:

  • C:\ MinGW \ include \ libusb-1.0 \ libusb.h
  • C:\ MinGW \ lib \ dll \ libusb-1.0.dll
  • C:\ MinGW \ lib \ dll \ libusb-1.0.dll.a
  • C:\ MinGW \ lib \ static \ libusb-1.0.a

然后尝试使用此命令编译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吗? 谢谢。

0 个答案:

没有答案