не могу найти - Нет такого файла или каталога - libusb - Ubuntu 32 & amp; 64 бит

Я пытаюсь написать программу, которая передает данные на мое устройство. Я использую libusb. У меня было много проблем, чтобы установить его пакет в 32 & amp; 64-битная версия Ubuntu 16 LTS. Команды для установки:

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libusb-1.0-0-dev
sudo apt-get install libusb-1.0-0-dbg

также пытались: http://www.linuxfromscratch.org/blfs/view/svn/general/libusb.html

" dpkg -l libusb * "в Ubuntu 64 бит; показывает, что он был установлен, в то время как 32-разрядная версия объявляет «такого пакета нет ...».

Команда компиляции:

sudo gcc -g -o usbtest usbtest.c -lusb-1.0

В Ubuntu 64-битной она компилировалась в 32-битной, появилось следующее примечание:

/usr/bin/ld: cannot find -lusb-1.0
collect2: error: ld returned 1 exit status

, но я был уверен, что он существует, тогда я попытался Следующая команда, и она скомпилирована без ошибок.

sudo gcc -g -o usbtest usbtest.c -L/usr/local/lib -lusb-1.0

в конце, когда я выполняю свою программу, она не может найти мое устройство, другими словами, не может открыть устройство. ниже представлены процедуры отладки в Ubuntu (32 и 64 бит):

141      int r = 1; 
(gdb) s
143      r = libusb_init(NULL); 
(gdb) 
libusb_init (context=0x0) at ../../libusb/core.c:1983
1983    ../../libusb/core.c: No such file or directory.
(gdb) 
1985    in ../../libusb/core.c
(gdb) 
__GI_getenv (name=0xb7fb2f16 "LIBUSB_DEBUG") at getenv.c:34
34  getenv.c: No such file or directory.
(gdb) 
__x86.get_pc_thunk.bx () at ../sysdeps/i386/i686/multiarch/../memcmp.S:80
80  ../sysdeps/i386/i686/multiarch/../memcmp.S: No such file or directory.
(gdb) 
__GI_getenv (name=0xb7fb2f16 "LIBUSB_DEBUG") at getenv.c:35
35  getenv.c: No such file or directory.
(gdb) 
__strlen_ia32 () at ../sysdeps/i386/i686/multiarch/../../i586/strlen.S:43
43  ../sysdeps/i386/i686/multiarch/../../i586/strlen.S: No such file or directory.
(gdb) 
44  in ../sysdeps/i386/i686/multiarch/../../i586/strlen.S

Я понятия не имею, что мне делать.

1
задан 3 November 2017 в 23:47

1 ответ

Я не совсем уверен, чего вы пытаетесь достичь; Вам нужен libusb для работы на 32 и 64 бит? Или только один из них? В любом случае, библиотека должна быть установлена ​​специально для правильной архитектуры. Команда установки по умолчанию устанавливает только свою «собственную» версию библиотеки. Вы можете указать ему установить обе версии:

sudo apt-get install libusb-1.0-0-dev:i386
sudo apt-get install libusb-1.0-0-dev:amd64

для 32 и 64 бит, соответственно. Вы также можете напрямую проверить файлы библиотеки, в моей системе (16.04) они находятся в

32bit: /usr/lib/i386-linux-gnu/
64bit: /usr/lib/x86_64-linux-gnu

(если у вас есть сомнения, dpkg-query -L libusb-1.0-0-dev покажет, где они установлены.)

Что касается libusb, который вы сами скомпилировали, вам нужно следить за тем, что вы используете правильную версию при компоновке вашей программы. Может быть, вы смешиваете 32- и 64-битные версии в / usr / local / lib? Тогда gcc / ld не знали бы, как их разделить.

Что касается сеанса отладки, GDB просто пытается показать вам исходные строки, но не знает, где найти исходные файлы библиотеки. В противном случае я не вижу ничего, что явно идет не так.

0
ответ дан 3 November 2017 в 23:47

Другие вопросы по тегам:

Похожие вопросы: