gpt4 book ai didi

cmake - fatal error : libusb/libusb. h:没有这样的文件或目录 librtlsdr 安装 GNU radio

转载 作者:行者123 更新时间:2023-12-05 01:32:50 25 4
gpt4 key购买 nike

正在尝试安装 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.h>#include <libusb-1.0/libusb.h> (如建议的 herehere ),这导致了不同的失败:

/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 (参见 herehere )我不知道在哪里可以找到(因为我正在使用 make ,但不习惯)。

我也试过替换原来的#include <libusb.h>#include <usb.h> (如 here 所示)导致:

/rtl-sdr/src/librtlsdr.c:97:2: error: unknown type name ‘libusb_context’

仅供引用 libusb-1.0-0-devlibusb-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 版本 5.4.0-58-generic gcc 版本 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)。此安装旨在能够将 DVB-T 软件狗与 GNU Radio 一起使用,这需要此 rtl-sdr安装。

编辑:@Tsyvarev 回答后

  1. 已安装pkg-configsudo apt install pkg-config
  2. 删除了由初始 git clone 生成的第一个存储库, 新清洁 git clone , 新 /build等等 然后 make , 成功了!

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

作为旁注,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source” block 而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdrsudo apt install gr-osmosdr安装后 rtl-sdr用一个简单的 sudo apt-get install rtl-sdr .

最佳答案

@Tsyvarev 的回答(见评论),我将其放在问题末尾的 EDIT: 中。我在这里重新发布他的解决方案,以便关闭问题并将其标记为已解决。

  1. 已安装pkg-configsudo apt install pkg-config
  2. 删除了由初始 git clone 生成的第一个存储库, 新清洁 git clone , 新 /build等等 然后 make , 成功了!

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

作为旁注,对于那些因为试图为 GNU Radio 安装“RTL-SDR Source” block 而最终来到这里的人,我怀疑我的问题实际上是我没有安装 gr-osmosdrsudo apt install gr-osmosdr安装后 rtl-sdr用一个简单的 sudo apt-get install rtl-sdr .

关于cmake - fatal error : libusb/libusb. h:没有这样的文件或目录 librtlsdr 安装 GNU radio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65296289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com