pothosware / SoapySDRPlay3

Soapy SDR plugin for SDRPlay APIv3
https://github.com/pothosware/SoapySDRPlay3/wiki
MIT License
90 stars 15 forks source link

Mac M1 Issue #65

Open madjuju opened 1 year ago

madjuju commented 1 year ago

[ 16%] Linking CXX shared module libsdrPlaySupport.so Undefined symbols for architecture arm64: "SoapySDR::Device::getSettingInfo(std::1::basic_string<char, std::__1::char_traits, std::1::allocator > const&) const", referenced from: vtable for SoapySDRPlay in Settings.cpp.o "SoapySDR::Device::getSettingInfo(int, unsigned long, std::1::basic_string<char, std::__1::char_traits, std::1::allocator > const&) const", referenced from: vtable for SoapySDRPlay in Settings.cpp.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [libsdrPlaySupport.so] Error 1 make[1]: [CMakeFiles/sdrPlaySupport.dir/all] Error 2 make: *** [all] Error 2

fventuri commented 1 year ago

@madjuju - it looks like libSoapySDR on your Mac is missing that getSettingInfo function for some reason.

To confirm this is really the case, do you mind running the following command from a terminal:

find /usr -name libSoapySDR\*

this output should hopefully be the full path of the SoapySDR dynamic library on your system; probably something like this: /usr/local/lib/libSoapySDR.<version>.dylib

Once you have that filename, the next step is to run the command:

nm -C <filename from the previous step> | grep 'SoapySDR::Device::getSettingInfo'

and see if it returns anything.

I don't have a Mac here, since I run Linux on my computer; you may have to tweak the commands above a little bit in case you get some error message or warning.

Franco

Aldekein commented 1 year ago

I have the same issue, but on M2. I have tried SDRplay_RSP_API-ARM64-3.07.1.run, SDRplay_RSP_API-MacOS-3.07.a4.run, SDRplay_RSP_API-MacOSX-3.07.3.pkg – the proper arm64 module, that should be placed in lib/SoapySDR/modules0.8/libsdrPlaySupport.so is absent :(

I compiled everything that allowed to compile, gathered all libraries of 'Mach-O 64-bit dynamically linked shared library arm64' format, but I lack this one file and cannot build it.

Fixed! Update: only when I removed everything SDR related installed via brew (brew remove gnuradio soapysdr soapyrtlsdr), was I able to build SoapySDRPlay and get /usr/local/lib/SoapySDR/modules0.8-3/libsdrPlaySupport.so!

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

Lib Version: v0.8.1-gbb33b2d2
API Version: v0.8.200
ABI Version: v0.8-3
Install root: /usr/local
Search path:  /usr/local/lib/SoapySDR/modules0.8-3
Module found: /usr/local/lib/SoapySDR/modules0.8-3/libsdrPlaySupport.so (0.4.1-c4bb9af)
Available factories... sdrplay