Пытаюсь установить rtl-sdr
(через git clone git://git.osmocom.org/rtl-sdr.git
) благодаря инструкции здесь но не могу пройти дальше make
в первой последовательности инструкций:
cd rtl-sdr/
mkdir build
cd build
cmake ../
make
При первой попытке я получил следующую ошибку:
/rtl-sdr/src/librtlsdr.c:30:10: fatal error: libusb.h: No such file or directory
После нахождения этого файла:
/usr/include$ sudo locate libusb.h
/usr/include/libusb-1.0/libusb.h
Я попытался заменить оригинальный #include <libusb.h>
на #include <libusb-1.0/libusb.h>
(как было предложено здесь и здесь), что привело к другому сбою:
/rtl-sdr/build$ make
[ 6%] Built target convenience_static
Scanning dependencies of target rtlsdr
[ 9%] Building C object src/CMakeFiles/rtlsdr.dir/librtlsdr.c.o
[ 12%] Linking C shared library librtlsdr.so
[ 28%] Built target rtlsdr
[ 31%] Linking C executable rtl_test
librtlsdr.so.0.6git: undefined reference to `libusb_open'
librtlsdr.so.0.6git: undefined reference to `libusb_release_interface'
librtlsdr.so.0.6git: undefined reference to `libusb_close'
librtlsdr.so.0.6git: undefined reference to `libusb_get_string_descriptor_ascii'
librtlsdr.so.0.6git: undefined reference to `libusb_get_device_list'
librtlsdr.so.0.6git: undefined reference to `libusb_kernel_driver_active'
librtlsdr.so.0.6git: undefined reference to `libusb_alloc_transfer'
librtlsdr.so.0.6git: undefined reference to `libusb_bulk_transfer'
librtlsdr.so.0.6git: undefined reference to `libusb_reset_device'
librtlsdr.so.0.6git: undefined reference to `libusb_handle_events_timeout'
librtlsdr.so.0.6git: undefined reference to `libusb_get_device'
librtlsdr.so.0.6git: undefined reference to `libusb_exit'
librtlsdr.so.0.6git: undefined reference to `libusb_free_transfer'
librtlsdr.so.0.6git: undefined reference to `libusb_init'
librtlsdr.so.0.6git: undefined reference to `libusb_get_device_descriptor'
librtlsdr.so.0.6git: undefined reference to `libusb_free_device_list'
librtlsdr.so.0.6git: undefined reference to `libusb_claim_interface'
librtlsdr.so.0.6git: undefined reference to `libusb_control_transfer'
librtlsdr.so.0.6git: undefined reference to `libusb_submit_transfer'
librtlsdr.so.0.6git: undefined reference to `libusb_dev_mem_free'
librtlsdr.so.0.6git: undefined reference to `libusb_cancel_transfer'
collect2: error: ld returned 1 exit status
src/CMakeFiles/rtl_test.dir/build.make:96: recipe for target 'src/rtl_test' failed
make[2]: *** [src/rtl_test] Error 1
CMakeFiles/Makefile2:138: recipe for target 'src/CMakeFiles/rtl_test.dir/all' failed
make[1]: *** [src/CMakeFiles/rtl_test.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2
Обратите внимание, что это предложение, по-видимому, связано с опцией / ссылкой компиляции gcc --cflags libusb-1.0
или -lusb-1.0
(см. здесь и здесь), которую я не знаю, где найти (поскольку я использую make
, не будучи привык к этому).
Я также попытался заменить оригинальный #include <libusb.h>
на #include <usb.h>
(как видно здесь), что привело к:
/rtl-sdr/src/librtlsdr.c:97:2: error: unknown type name ‘libusb_context’
К вашему сведению libusb-1.0-0-dev
и libusb-dev
уже установлены (как было предложено здесь, я пробовал, хотя, думаю, он уже был установлен...):
/usr/include$ sudo apt install libusb-1.0-0-dev
libusb-1.0-0-dev is already the newest version (2:1.0.21-2).
~$ sudo apt install libusb-dev
libusb-dev is already the newest version (2:0.1.12-31).
И уже установил rtl-sdr
с помощью apt
:
sudo apt-get install rtl-sdr
rtl-sdr is already the newest version (0.5.3-13).
О моей системе: Linux версии 5.4.0-58-общая версия gcc 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04). Эта установка направлена на то, чтобы можно было использовать ключ DVB-T с GNU Radio, для чего требуется эта rtl-sdr
установка.
Обновлено: после ответа @Tsyvarev
pkg-config
с sudo apt install pkg-config
git clone
, новый чистый
git clone
, новый /build
и т. д., а затем make
, который сработал!Удаление старого клона репозитория и повторное создание чистого /build
было необходимо, так как попытка запустить make
в старом /build
даже после установки pkg-config
не сработала. Обратите внимание, что это означает, что в строке кода #include <libusb.h>
в src/librtlsdr.c
не требуется никаких изменений.
В качестве примечания для тех из вас, кто оказался здесь, потому что пытается установить блок «RTL-SDR Source» для GNU Radio, я подозреваю, что моя проблема на самом деле была в том, что я не установил gr-osmosdr
с sudo apt install gr-osmosdr
после установки rtl-sdr
с простым sudo apt-get install rtl-sdr
.
@Tsyvarev спасибо, вы решили мою проблему (см. РЕДАКТИРОВАТЬ в конце моего вопроса), если вы напишете настоящий ТАК ответ, я с радостью приму его!
Ответ @Tsyvarev (см. комментарий), который я добавил в Обновлено: в конце моего вопроса. Я повторно публикую его решение здесь, чтобы закрыть вопрос и отметить его как решенный.
pkg-config
с sudo apt install pkg-config
git clone
, новый чистый
git clone
, новый /build
и т. д., а затем make
, который сработал!Удаление старого клона репозитория и повторное создание чистого /build
было необходимо, так как попытка запустить make
в старом /build
даже после установки pkg-config
не сработала. Обратите внимание, что это означает, что в строке кода #include <libusb.h>
в src/librtlsdr.c
не требуется никаких изменений.
В качестве примечания для тех из вас, кто оказался здесь, потому что пытается установить блок «RTL-SDR Source» для GNU Radio, я подозреваю, что моя проблема на самом деле была в том, что я не установил gr-osmosdr
с sudo apt install gr-osmosdr
после установки rtl-sdr
с простым sudo apt-get install rtl-sdr
.
tl;dr (для меня): запустить sudo apt install pkg-config
, клонировать новую копию проекта и перезапустить make
весь путь:
sudo apt install pkg-config
sudo apt install libusb-1.0-0
git clone git://git.osmocom.org/rtl-sdr.git
cd rtl-sdr
mkdir build
cd build
cmake ..
sudo make install
Согласно CMakeLists.txt проекта, ожидается, что либо libusb будет найден с помощью
pkg-config
, либо, еслиpkg-config
недоступен, параметры libusb должны быть заполнены вручную:LIBUSB_INCLUDE_DIRS
должен быть установлен для включения каталога (/usr/include/libusb-1.0
в вашем случае) иLIBUSB_LIBRARIES
должна быть установлена библиотека libusb (для ссылки). Хотя вроде проще установитьpkg-config
.