首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >致命错误: libusb/libusb.h:对于GNU无线电没有安装这样的文件或目录librtlsdr

致命错误: libusb/libusb.h:对于GNU无线电没有安装这样的文件或目录librtlsdr
EN

Stack Overflow用户
提问于 2020-12-14 20:47:57
回答 2查看 6.3K关注 0票数 3

由于指令rtl-sdr,尝试安装这里 (通过git clone git://git.osmocom.org/rtl-sdr.git),但在第一个指令序列中不能超过make

代码语言:javascript
复制
cd rtl-sdr/
mkdir build
cd build
cmake ../
make

在我的第一次尝试中,我得到了以下错误:

代码语言:javascript
复制
/rtl-sdr/src/librtlsdr.c:30:10: fatal error: libusb.h: No such file or directory

定位此文件后:

代码语言:javascript
复制
/usr/include$ sudo locate libusb.h
/usr/include/libusb-1.0/libusb.h

我试图用#include <libusb-1.0/libusb.h> (按照这里这里的建议)替换原始的这里,这导致了另一个失败:

代码语言:javascript
复制
/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 (cf )有关。这里这里),我不知道在哪里找到(因为我在使用make,而不习惯它)。

我还尝试用#include <usb.h> (见过这里)替换原始的这里,这导致了:

代码语言:javascript
复制
/rtl-sdr/src/librtlsdr.c:97:2: error: unknown type name ‘libusb_context’

FYI libusb-1.0-0-devlibusb-dev已经安装(正如建议的这里,我尝试过了,尽管我想我已经安装了它.):

代码语言:javascript
复制
/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

代码语言:javascript
复制
sudo apt-get install rtl-sdr
rtl-sdr is already the newest version (0.5.3-13).

关于我的系统:Linux5.4.0-58-通用gcc版本7.5.0 (Ubuntu7.5.0-3 ubuntu1~18.04)。此安装的目的是能够使用DVB-T dongle与GNU电台,这需要这个rtl-sdr安装。

编辑:@Tsyvarev回答后的

  1. 安装了带有pkg-configsudo apt install pkg-config
  2. 删除了最初的git clone、新的干净git clone、新的/build等产生的第一个存储库,然后删除了make,它起作用了!

删除旧的存储库克隆&重新创建一个干净的/build是必要的,因为尝试在旧/build中启动make,即使在pkg-config安装失败之后也是如此。请注意,这意味着不需要对#include <libusb.h>代码行进行src/librtlsdr.c更改。

顺便提一句,对于那些因为试图安装GNU电台的“Radio”块而在这里结束的人来说,我怀疑我的问题实际上是在用简单的gr-osmosdr安装rtl-sdr之后,没有在sudo apt install gr-osmosdr中安装sudo apt-get install rtl-sdr

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-28 12:18:12

@Tsyvarev回答(见注释),我将其放在问题末尾的编辑:中。我把他的解决办法重新贴在这里,以便结束这个问题,并把它标记为已解决的问题。

  1. 安装了带有pkg-configsudo apt install pkg-config
  2. 删除了最初的git clone、新的干净git clone、新的/build等产生的第一个存储库,然后删除了make,它起作用了!

删除旧的存储库克隆&重新创建一个干净的/build是必要的,因为尝试在旧/build中启动make,即使在pkg-config安装失败之后也是如此。请注意,这意味着不需要对#include <libusb.h>代码行进行src/librtlsdr.c更改。

顺便提一句,对于那些因为试图安装GNU电台的“Radio”块而在这里结束的人来说,我怀疑我的问题实际上是在用简单的gr-osmosdr安装rtl-sdr之后,没有在sudo apt install gr-osmosdr中安装sudo apt-get install rtl-sdr

票数 5
EN

Stack Overflow用户

发布于 2021-06-07 13:46:51

全程:

代码语言:javascript
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65296289

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档