c - 如何使用 LimeSDR USB 正确安装 SoapySDR

标签 c compiler-errors

我想使用 SoapySDR 编写 C 代码来控制我的 LimeSDR USB。但是,似乎没有安装 SoapySDR,但在安装驱动程序时应该包含它。

首先,按照 wiki 中的步骤安装 LimeSDR 硬件的驱动程序,如下所示:

sudo add-apt-repository -y ppa:myriadrf/drivers
sudo apt-get update
sudo apt-get install limesuite liblimesuite-dev limesuite-udev limesuite-images
sudo apt-get install soapysdr-tools soapysdr-module-lms7

#soapysdr-tools use to be called just soapysdr on older packages
sudo apt-get install soapysdr soapysdr-module-lms7

然后我测试了以下命令:

$ SoapySDRUtil --info
######################################################
##     Soapy SDR -- the SDR abstraction library     ##
######################################################

Lib Version: v0.7.1-myriadrf1~ubuntu18.04
API Version: v0.7.1
ABI Version: v0.7
Install root: /usr
Search path:  /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7
Search path:  /usr/local/lib/x86_64-linux-gnu/SoapySDR/modules0.7   (missing)
Search path:  /usr/local/lib/SoapySDR/modules0.7                    (missing)
Module found: /usr/lib/x86_64-linux-gnu/SoapySDR/modules0.7/libLMS7Support.so (19.01.0)   
Available factories... lime
Available converters...
-  CF32 -> [CF32, CS16, CS8, CU16, CU8]
-  CS16 -> [CF32, CS16, CS8, CU16, CU8]
-  CS32 -> [CS32]
-   CS8 -> [CF32, CS16, CS8, CU16, CU8]
-  CU16 -> [CF32, CS16, CS8]
-   CU8 -> [CF32, CS16, CS8]
-   F32 -> [F32, S16, S8, U16, U8]
-   S16 -> [F32, S16, S8, U16, U8]
-   S32 -> [S32]
-    S8 -> [F32, S16, S8, U16, U8]
-   U16 -> [F32, S16, S8]
-    U8 -> [F32, S16, S8]

当我尝试运行简单的代码时:

  #include <SoapySDR/Device.h>
  #include <SoapySDR/Formats.h>
  #include <stdio.h> //printf
  #include <stdlib.h> //free
  #include <complex.h>

  int main(void)
  {
     size_t length;

     //enumerate devices
     SoapySDRKwargs *results = SoapySDRDevice_enumerate(NULL, &length);
     for (size_t i = 0; i < length; i++)
    {
       printf("Found device #%d: ", (int)i);
       for (size_t j = 0; j < results[i].size; j++)
       {
          printf("%s=%s, ", results[i].keys[j], results[i].vals[j]);
       }
       printf("\n");

    printf("Done\n");
    return EXIT_SUCCESS;
  }

我编译如下

  gcc -std=c99 API_example.c -lSoapySDR && ./a.out

我收到以下错误:

  API_example.c:1:10: fatal error: SoapySDR/Device.h: No such file or directory
  #include <SoapySDR/Device.h>
           ^~~~~~~~~~~~~~~~~~~

有人知道如何修复它吗?

最佳答案

几分钟前我遇到了完全相同的问题。严格遵循本指南,它应该有效。 https://github.com/pothosware/SoapySDR/wiki/BuildGuide#ubuntu

我假设您正在运行 debian 发行版,但如果不是,本指南也会介绍您。

sudo apt-get install cmake g++

sudo apt-get install libpython-dev python-numpy swig

git 克隆 https://github.com/pothosware/SoapySDR.git

cd SoapySDR

mkdir 构建

cd 构建

cmake ..

制作-j4

sudo make install

sudo ldconfig #debian 系统上需要

SoapySDRUtil --信息

现在您应该能够编译了。即使我认为我已经安装了它,我也遇到了与您相同的问题。运行一下,它应该可以让你设置好。

关于c - 如何使用 LimeSDR USB 正确安装 SoapySDR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55850748/

相关文章:

java - 测试Java代码时"Cannot find symbol"

java - 没有对象的语句错误

rust - 如何从常量函数内部打印中间值以进行调试?

c - 修改抓包包头

c - Switch-Case 语句似乎卡住了我的循环

c - C 中的函数如何返回多个值?

c - 如何整合 roku 工具链

java - 发送电子邮件功能出错

javascript - VB 到 C# 字符串转换

c++ - 尝试在 C++ Visual Studio 2010 中声明枚举时出现奇怪错误