如何通过LimeSDR USB正确安装SoapySDR

时间:2019-04-25 13:44:02

标签: 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>
           ^~~~~~~~~~~~~~~~~~~

有人知道如何解决它吗?

1 个答案:

答案 0 :(得分:0)

几分钟前,我遇到了完全相同的问题。完全按照本指南进行操作即可。 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 clone https://github.com/pothosware/SoapySDR.git

cd SoapySDR

mkdir构建

cd版本

cmake ..

make -j4

sudo make install

sudo ldconfig #debian系统上需要

SoapySDRUtil --info

现在您应该可以编译了。即使我以为安装了它,我也遇到了与您相同的问题。试一下,它应该会帮助您。