Компиляция imx_usb_loader для Windows с использованием MinGW: проблема libusb - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь скомпилировать imx_usb_loader для использования в Windows, я использую MinGW64.

Я начал с загрузки проекта imx_usb_loader отсюда: ссылка

Из проекта readme, для компиляции мы используем эту команду:

mingw32-make -f Makefile.mingw LIBUSBPATH=C:\path\to\libusb

Итак, я скачал libusb-1.0.22.7z отсюда: ссылка

Из файла README.txt в архиве мы можем увидеть инструкции для MinGW:

  • Скопируйте libusb.h из include / libusb-1.0 / в каталог по умолчанию и скопируйте файлы MinGW32 / или MinGW64 / .a в каталог по умолчанию. Или, если вы не хотите использовать местоположения по умолчанию, убедитесь, что вы указали соответствующие параметры -I и -L для компилятора.
  • Добавить компоновщик '-lusb-1.0' при компиляции.

Итак, я распаковал файлы из архива так:

  • C: \ MinGW \ включать \ libusb-1.0 \ libusb.h
  • C: \ MinGW \ Lib \ DLL \ libusb-1.0.dll
  • C: \ MinGW \ Lib \ DLL \ libusb-1.0.dll.a
  • С: \ MinGW \ Lib \ статического \ 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? Спасибо.

...