fatal error: libusb/libusb.h: No such file or directory librtlsdr install for GNU radio
fatal error: libusb/libusb.h: No such file or directory librtlsdr install for GNU radio
尝试安装 rtl-sdr
(通过 git clone git://git.osmocom.org/rtl-sdr.git
)感谢 here 的说明,但不能比第一个指令序列中的 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-1.0/libusb.h>
替换原来的#include <libusb.h>
(按照建议here and ),这导致了不同的失败:
/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编译选项/link --cflags libusb-1.0
或-lusb-1.0
(参见here and here)有关在哪里可以找到(因为我正在使用make
,但不习惯)。
我还尝试用 #include <usb.h>
替换原来的 #include <libusb.h>
(如 here 所示),这导致:
/rtl-sdr/src/librtlsdr.c:97:2: error: unknown type name ‘libusb_context’
仅供参考 libusb-1.0-0-dev
和 libusb-dev
已经安装(按照建议 here,我试过了,尽管我想我已经安装了它...):
/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 version 5.4.0-58-generic gcc version 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
是必要的,因为即使在安装 [=32= 之后也试图在旧的 /build
中启动 make
] 没用。请注意,这意味着 src/librtlsdr.c
.
中的 #include <libusb.h>
代码行无需更改
附带说明一下,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source”块而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdr
和 sudo apt install gr-osmosdr
在安装 rtl-sdr
之后用一个简单的 sudo apt-get install rtl-sdr
.
@Tsyvarev 回答(见评论),我把它放在 EDIT: 问题末尾。我在这里重新post他的解决方案以关闭问题并将其标记为已解决。
- 已安装
pkg-config
sudo apt install pkg-config
- 删除了初始
git clone
产生的第一个存储库,新的清理
git clone
、新的 /build
等,然后是 make
,效果很好!
删除旧的存储库克隆并重新创建一个干净的 /build
是必要的,因为即使在安装 [=10= 之后也试图在旧的 /build
中启动 make
] 没用。请注意,这意味着 src/librtlsdr.c
.
中的 #include <libusb.h>
代码行无需更改
附带说明一下,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source”块而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdr
和 sudo apt install gr-osmosdr
在安装 rtl-sdr
之后用一个简单的 sudo apt-get install rtl-sdr
.
全程:
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
尝试安装 rtl-sdr
(通过 git clone git://git.osmocom.org/rtl-sdr.git
)感谢 here 的说明,但不能比第一个指令序列中的 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-1.0/libusb.h>
替换原来的#include <libusb.h>
(按照建议here and
/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编译选项/link --cflags libusb-1.0
或-lusb-1.0
(参见here and here)有关在哪里可以找到(因为我正在使用make
,但不习惯)。
我还尝试用 #include <usb.h>
替换原来的 #include <libusb.h>
(如 here 所示),这导致:
/rtl-sdr/src/librtlsdr.c:97:2: error: unknown type name ‘libusb_context’
仅供参考 libusb-1.0-0-dev
和 libusb-dev
已经安装(按照建议 here,我试过了,尽管我想我已经安装了它...):
/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 version 5.4.0-58-generic gcc version 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
是必要的,因为即使在安装 [=32= 之后也试图在旧的 /build
中启动 make
] 没用。请注意,这意味着 src/librtlsdr.c
.
#include <libusb.h>
代码行无需更改
附带说明一下,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source”块而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdr
和 sudo apt install gr-osmosdr
在安装 rtl-sdr
之后用一个简单的 sudo apt-get install rtl-sdr
.
@Tsyvarev 回答(见评论),我把它放在 EDIT: 问题末尾。我在这里重新post他的解决方案以关闭问题并将其标记为已解决。
- 已安装
pkg-config
sudo apt install pkg-config
- 删除了初始
git clone
产生的第一个存储库,新的清理git clone
、新的/build
等,然后是make
,效果很好!
删除旧的存储库克隆并重新创建一个干净的 /build
是必要的,因为即使在安装 [=10= 之后也试图在旧的 /build
中启动 make
] 没用。请注意,这意味着 src/librtlsdr.c
.
#include <libusb.h>
代码行无需更改
附带说明一下,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source”块而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdr
和 sudo apt install gr-osmosdr
在安装 rtl-sdr
之后用一个简单的 sudo apt-get install rtl-sdr
.
全程:
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