Building SoapySDR on ARM Fails

800 views
Skip to first unread message

Dave

unread,
Dec 15, 2016, 10:30:15 PM12/15/16
to Pothos Users
Jetson TK1 SBC with Nvidia Tegra K1 SoC (ARMv7 processor)
Fedora 22
g++ version 5.3.1

$ make -j4
[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Types.cpp.o
[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Device.cpp.o
[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Factory.cpp.o
[ 12%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Registry.cpp.o
[ 15%] Building CXX object lib/CMakeFiles/SoapySDR.dir/NullDevice.cpp.o
[ 18%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Logger.cpp.o
[ 21%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Errors.cpp.o
[ 24%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Formats.cpp.o
[ 27%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Modules.cpp.o
[ 30%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Version.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TypesC.cpp.o
[ 36%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ModulesC.cpp.o
[ 39%] Building CXX object lib/CMakeFiles/SoapySDR.dir/VersionC.cpp.o
[ 42%] Building CXX object lib/CMakeFiles/SoapySDR.dir/DeviceC.cpp.o
[ 45%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FactoryC.cpp.o
[ 48%] Building CXX object lib/CMakeFiles/SoapySDR.dir/LoggerC.cpp.o
[ 54%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TimeC.cpp.o
[ 54%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ErrorsC.cpp.o
[ 57%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FormatsC.cpp.o
[ 60%] Linking CXX shared library libSoapySDR.so
[ 60%] Built target SoapySDR
[ 69%] Building CXX object tests/CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o
[ 69%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o
[ 69%] Building CXX object tests/CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o
[ 72%] Building CXX object tests/CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o
[ 75%] Linking CXX executable TestTimeConversion
/bin/ld: CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o: relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
tests/CMakeFiles/TestTimeConversion.dir/build.make:95: recipe for target 'tests/TestTimeConversion' failed
make[2]: *** [tests/TestTimeConversion] Error 1
CMakeFiles/Makefile2:305: recipe for target 'tests/CMakeFiles/TestTimeConversion.dir/all' failed
make[1]: *** [tests/CMakeFiles/TestTimeConversion.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 78%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRProbe.cpp.o
[ 81%] Linking CXX executable TestFormatParser
/bin/ld: CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o: relocation R_ARM_MOVW_ABS_NC against `__pthread_key_create@@GLIBC_2.4' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
tests/CMakeFiles/TestFormatParser.dir/build.make:95: recipe for target 'tests/TestFormatParser' failed
make[2]: *** [tests/TestFormatParser] Error 1
CMakeFiles/Makefile2:231: recipe for target 'tests/CMakeFiles/TestFormatParser.dir/all' failed
make[1]: *** [tests/CMakeFiles/TestFormatParser.dir/all] Error 2
[ 84%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapyRateTest.cpp.o
[ 87%] Linking CXX executable TestKwargsMarkup
/bin/ld: CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o: relocation R_ARM_MOVW_ABS_NC against `__pthread_key_create@@GLIBC_2.4' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
tests/CMakeFiles/TestKwargsMarkup.dir/build.make:95: recipe for target 'tests/TestKwargsMarkup' failed
make[2]: *** [tests/TestKwargsMarkup] Error 1
CMakeFiles/Makefile2:268: recipe for target 'tests/CMakeFiles/TestKwargsMarkup.dir/all' failed
make[1]: *** [tests/CMakeFiles/TestKwargsMarkup.dir/all] Error 2
[ 90%] Linking CXX executable SoapySDRUtil
/bin/ld: CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o: relocation R_ARM_MOVW_ABS_NC against `__pthread_key_create@@GLIBC_2.4' can not be used when making a shared object; recompile with -fPIC
CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
apps/CMakeFiles/SoapySDRUtil.dir/build.make:147: recipe for target 'apps/SoapySDRUtil' failed
make[2]: *** [apps/SoapySDRUtil] Error 1
CMakeFiles/Makefile2:172: recipe for target 'apps/CMakeFiles/SoapySDRUtil.dir/all' failed
make[1]: *** [apps/CMakeFiles/SoapySDRUtil.dir/all] Error 2
Makefile:138: recipe for target 'all' failed
make: *** [all] Error 2

Any suggestions appreciated.

Josh Blum

unread,
Dec 16, 2016, 12:26:30 AM12/16/16
to pothos...@googlegroups.com

> [ 90%] Linking CXX executable SoapySDRUtil
> /bin/ld: CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o: relocation
> R_ARM_MOVW_ABS_NC against `__pthread_key_create@@GLIBC_2.4' can not be used
> when making a shared object; recompile with -fPIC
> CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o: error adding symbols: Bad
> value
>
> Any suggestions appreciated.
>

Hey Dave,

Perhaps one of the libraries we link against is different on this
platform. Can you try to set CMAKE_POSITION_INDEPENDENT_CODE somewhere
in the top level cmakelists? When it suggests -fPIC this is generally
the solution. Just like so:

> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index c541a30..d29ebe2 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -75,6 +75,8 @@ if(APPLE)
> set(CMAKE_MACOSX_RPATH ON)
> endif()
>
> +set(CMAKE_POSITION_INDEPENDENT_CODE ON)
> +

That should set -fPIC in a platform independent way. I will update the
build if this fixes it. Let me know!

-josh

PS -
https://cmake.org/cmake/help/v3.4/variable/CMAKE_POSITION_INDEPENDENT_CODE.html

Dave

unread,
Dec 16, 2016, 7:31:16 PM12/16/16
to Pothos Users, jo...@joshknows.com
Thanks, I put it in the following three files which I found were setting similar variables.   I have no "CMakeLists.txt" files.   The build completes, but Util doesn't run.

dave@tk1:~/SoapySDR/build$ find ./ -type f -iname "CMakeLists.txt"

dave@tk1:~/SoapySDR/build$ find ./ -type f -exec grep -il CMAKE_POSITION_INDEPENDENT_CODE {} \;
./CMakeFiles/3.3.2/CMakeCXXCompiler.cmake
./CMakeFiles/3.3.2/CMakeCCompiler.cmake
./CMakeCache.txt

dave@tk1:~/SoapySDR/build$ make clean
dave@tk1:~/SoapySDR/build$ cmake ../
-- Build type not specified: defaulting to release.
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
--
-- #############################################
-- ## Begin configuration for Python support...
-- #############################################
-- Enabling optional Python bindings if possible...
-- SWIG_FOUND: TRUE - 3.0.7
-- PYTHONINTERP_FOUND: TRUE - 2.7.10
-- PYTHON_EXECUTABLE: /bin/python
-- PYTHON_INSTALL_DIR: ${prefix}/lib/python2.7/site-packages
-- PYTHONLIBS_FOUND: TRUE - 2.7.10
-- PYTHON_INCLUDE_DIRS: /usr/include/python2.7
-- PYTHON_LIBRARIES: /usr/lib/libpython2.7.so
-- CMAKE_SWIG_FLAGS=-c++;-threads;-DSIZE_T_IS_UNSIGNED_INT
--
-- #############################################
-- ## Begin configuration for Python3 support...
-- #############################################
-- Enabling optional Python3 bindings if possible...
-- SWIG_FOUND: TRUE - 3.0.7
-- Could NOT find Python3InterpDbg (missing:  PYTHON3_DBG_EXECUTABLE)
-- PYTHON3INTERP_FOUND: TRUE
-- PYTHON3_EXECUTABLE: /bin/python3
Fatal Python error: Py_Initialize: Unable to get the locale encoding
  File "/usr/lib/python2.7/encodings/__init__.py", line 123
    raise CodecRegistryError,\
                            ^
SyntaxError: invalid syntax
-- PYTHON3_INSTALL_DIR: ${prefix}/
-- Could NOT find Python3Libs (missing:  PYTHON3_LIBRARIES PYTHON3_INCLUDE_DIRS)
-- PYTHON3LIBS_FOUND: FALSE
-- PYTHON3_INCLUDE_DIRS: PYTHON3_INCLUDE_DIR-NOTFOUND
-- PYTHON3_LIBRARIES: PYTHON3_LIBRARY-NOTFOUND
--
-- ######################################################
-- ## SoapySDR enabled features
-- ######################################################
--
 * Library , runtime library v0.6.0-ga412ad4f
 * Tests , library unit tests
 * Python , python bindings v2.7.10

-- ######################################################
-- ## SoapySDR disabled features
-- ######################################################
--
 * Docs , doxygen documentation
 * Python3 , python3 bindings

-- SoapySDR version: v0.6.0-ga412ad4f
-- ABI/so version: v0.6-dev
-- Install prefix: /usr/local
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dave/SoapySDR/build

dave@tk1:~/SoapySDR/build$ make -j4

[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Device.cpp.o
[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Types.cpp.o
[  9%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Factory.cpp.o
[ 12%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Registry.cpp.o
[ 15%] Building CXX object lib/CMakeFiles/SoapySDR.dir/NullDevice.cpp.o
[ 21%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Errors.cpp.o
[ 21%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Logger.cpp.o

[ 24%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Formats.cpp.o
[ 27%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Modules.cpp.o
[ 30%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Version.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TypesC.cpp.o
[ 36%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ModulesC.cpp.o
[ 39%] Building CXX object lib/CMakeFiles/SoapySDR.dir/VersionC.cpp.o
[ 42%] Building CXX object lib/CMakeFiles/SoapySDR.dir/DeviceC.cpp.o
[ 45%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FactoryC.cpp.o
[ 48%] Building CXX object lib/CMakeFiles/SoapySDR.dir/LoggerC.cpp.o
[ 51%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TimeC.cpp.o

[ 54%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ErrorsC.cpp.o
[ 57%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FormatsC.cpp.o
[ 60%] Linking CXX shared library libSoapySDR.so
[ 60%] Built target SoapySDR
[ 69%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o
[ 69%] Building CXX object tests/CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o
[ 69%] Building CXX object tests/CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o
[ 72%] Building CXX object tests/CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o
[ 75%] Linking CXX executable TestTimeConversion
[ 75%] Built target TestTimeConversion

[ 78%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRProbe.cpp.o
[ 81%] Linking CXX executable TestFormatParser
[ 81%] Built target TestFormatParser

[ 84%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapyRateTest.cpp.o
[ 87%] Linking CXX executable TestKwargsMarkup
[ 90%] Swig source
[ 90%] Built target TestKwargsMarkup
[ 93%] Linking CXX executable SoapySDRUtil
[ 93%] Built target SoapySDRUtil
Scanning dependencies of target _SoapySDR
[ 96%] Building CXX object python/CMakeFiles/_SoapySDR.dir/SoapySDRPYTHON_wrap.cxx.o
[100%] Linking CXX shared module _SoapySDR.so
[100%] Built target _SoapySDR

dave@tk1:~/SoapySDR/build$ sudo make install
[ 60%] Built target SoapySDR
[ 72%] Built target SoapySDRUtil
[ 78%] Built target TestFormatParser
[ 84%] Built target TestKwargsMarkup
[ 90%] Built target TestTimeConversion
[100%] Built target _SoapySDR
Install the project...
-- Install configuration: "Release"
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRConfig.cmake
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRUtil.cmake
-- Up-to-date: /usr/local/share/cmake/SoapySDR/SoapySDRConfigVersion.cmake
-- Up-to-date: /usr/local/include/SoapySDR
-- Up-to-date: /usr/local/include/SoapySDR/Modules.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Time.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Types.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Modules.h
-- Up-to-date: /usr/local/include/SoapySDR/Formats.h
-- Up-to-date: /usr/local/include/SoapySDR/Registry.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Types.h
-- Up-to-date: /usr/local/include/SoapySDR/Version.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Config.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Config.h
-- Up-to-date: /usr/local/include/SoapySDR/Errors.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Time.h
-- Up-to-date: /usr/local/include/SoapySDR/Version.h
-- Up-to-date: /usr/local/include/SoapySDR/Constants.h
-- Up-to-date: /usr/local/include/SoapySDR/Formats.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Device.h
-- Up-to-date: /usr/local/include/SoapySDR/Logger.hpp
-- Up-to-date: /usr/local/include/SoapySDR/Errors.h
-- Up-to-date: /usr/local/include/SoapySDR/Logger.h
-- Up-to-date: /usr/local/include/SoapySDR/Device.hpp
-- Installing: /usr/local/lib/libSoapySDR.so.0.6.0
-- Up-to-date: /usr/local/lib/libSoapySDR.so.0.6-dev
-- Up-to-date: /usr/local/lib/libSoapySDR.so
-- Up-to-date: /usr/local/lib/pkgconfig/SoapySDR.pc
-- Installing: /usr/local/bin/SoapySDRUtil
-- Removed runtime path from "/usr/local/bin/SoapySDRUtil"
-- Up-to-date: /usr/local/share/man/man1/SoapySDRUtil.1
-- Installing: /usr/local/lib/python2.7/site-packages/_SoapySDR.so
-- Removed runtime path from "/usr/local/lib/python2.7/site-packages/_SoapySDR.so"
-- Installing: /usr/local/lib/python2.7/site-packages/SoapySDR.py

dave@tk1:~/SoapySDR/build$ sudo ldconfig

dave@tk1:~/SoapySDR/build$ SoapySDRUtil --info
Segmentation fault


Josh Blum

unread,
Dec 18, 2016, 7:06:22 PM12/18/16
to Dave, Pothos Users


On 12/16/2016 04:31 PM, Dave wrote:
> Thanks, I put it in the following three files which I found were setting
> similar variables. I have no "CMakeLists.txt" files. The build
> completes, but Util doesn't run.
>
> dave@tk1:~/SoapySDR/build$ find ./ -type f -iname "CMakeLists.txt"
>
> dave@tk1:~/SoapySDR/build$ find ./ -type f -exec grep -il
> CMAKE_POSITION_INDEPENDENT_CODE {} \;
> ./CMakeFiles/3.3.2/CMakeCXXCompiler.cmake
> ./CMakeFiles/3.3.2/CMakeCCompiler.cmake
> ./CMakeCache.txt
>
> dave@tk1:~/SoapySDR/build$ make clean
> dave@tk1:~/SoapySDR/build$ cmake ../
> -- Build type not specified: defaulting to release.
> -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)
>

Dave,

Ive no idea why its failing but I'm a little suspicious of the original
build erroring on linking. Maybe it picked up a static pthread library
or something unusual. Can you share the output of the cmake command and
the output of make VERBOSE=1?

-josh

I do regularly use soapysdr on debian armhf myself. FWIW

Dave

unread,
Dec 18, 2016, 11:00:19 PM12/18/16
to Pothos Users, da...@dtaviation.com, jo...@joshknows.com
Please see attached.
make.out
make_install.out
cmake.out

Dave

unread,
Dec 21, 2016, 12:01:11 PM12/21/16
to Pothos Users, da...@dtaviation.com, jo...@joshknows.com
I tried it on a 64-bit arm board (pine64):

[dave@pine64 build]$ cmake ..

-- Build type not specified: defaulting to release.
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
--
-- #############################################
-- ## Begin configuration for Python support...
-- #############################################
-- Enabling optional Python bindings if possible...
-- Found SWIG: /usr/bin/swig (found version "3.0.8")
-- SWIG_FOUND: TRUE - 3.0.8
-- PYTHONINTERP_FOUND: TRUE - 3.5.2
-- PYTHON_EXECUTABLE: /usr/bin/python3.5
-- PYTHON_INSTALL_DIR: ${prefix}/lib64/python3.5/site-packages
-- Found PythonLibs: /usr/lib64/libpython2.7.so (found version "2.7.12")
-- PYTHONLIBS_FOUND: TRUE - 2.7.12
-- PYTHON_INCLUDE_DIRS: /usr/include/python2.7
-- PYTHON_LIBRARIES: /usr/lib64/libpython2.7.so
CMake Warning at python/CMakeLists.txt:82 (message):
  Python interp and library version mismatch



--
-- ######################################################
-- ## SoapySDR enabled features
-- ######################################################
--
 * Library , runtime library v0.6.0-g5e823fc1

 * Tests , library unit tests

-- ######################################################
-- ## SoapySDR disabled features
-- ######################################################
--
 * Docs , doxygen documentation
 * Python , python bindings v3.5.2

-- SoapySDR version: v0.6.0-g5e823fc1

-- ABI/so version: v0.6-dev
-- Install prefix: /usr/local
-- Configuring done
-- Generating done
-- Build files have been written to: /home/dave/SoapySDR/build
[dave@pine64 build]$ make -j4
Scanning dependencies of target SoapySDR
[ 10%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Device.cpp.o
[ 10%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Registry.cpp.o
[ 10%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Factory.cpp.o
[ 13%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Types.cpp.o
[ 16%] Building CXX object lib/CMakeFiles/SoapySDR.dir/NullDevice.cpp.o
[ 20%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Logger.cpp.o
[ 23%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Errors.cpp.o
[ 26%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Formats.cpp.o
[ 30%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Modules.cpp.o
[ 33%] Building CXX object lib/CMakeFiles/SoapySDR.dir/Version.cpp.o
[ 36%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TypesC.cpp.o
[ 40%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ModulesC.cpp.o
[ 43%] Building CXX object lib/CMakeFiles/SoapySDR.dir/VersionC.cpp.o
[ 46%] Building CXX object lib/CMakeFiles/SoapySDR.dir/DeviceC.cpp.o
[ 50%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FactoryC.cpp.o
[ 53%] Building CXX object lib/CMakeFiles/SoapySDR.dir/LoggerC.cpp.o
[ 56%] Building CXX object lib/CMakeFiles/SoapySDR.dir/TimeC.cpp.o
[ 63%] Building CXX object lib/CMakeFiles/SoapySDR.dir/ErrorsC.cpp.o
[ 63%] Building CXX object lib/CMakeFiles/SoapySDR.dir/FormatsC.cpp.o
[ 66%] Linking CXX shared library libSoapySDR.so
[ 66%] Built target SoapySDR
Scanning dependencies of target TestKwargsMarkup
Scanning dependencies of target TestFormatParser
Scanning dependencies of target TestTimeConversion
[ 76%] Building CXX object tests/CMakeFiles/TestKwargsMarkup.dir/TestKwargsMarkup.cpp.o
[ 76%] Building CXX object tests/CMakeFiles/TestFormatParser.dir/TestFormatParser.cpp.o
[ 76%] Building CXX object tests/CMakeFiles/TestTimeConversion.dir/TestTimeConversion.cpp.o
Scanning dependencies of target SoapySDRUtil
[ 80%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRUtil.cpp.o
[ 83%] Linking CXX executable TestTimeConversion
[ 83%] Built target TestTimeConversion
[ 86%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapySDRProbe.cpp.o
[ 90%] Linking CXX executable TestFormatParser
[ 90%] Built target TestFormatParser
[ 93%] Building CXX object apps/CMakeFiles/SoapySDRUtil.dir/SoapyRateTest.cpp.o
[ 96%] Linking CXX executable TestKwargsMarkup
[ 96%] Built target TestKwargsMarkup
[100%] Linking CXX executable SoapySDRUtil
[100%] Built target SoapySDRUtil
[dave@pine64 build]$ sudo make install
[ 66%] Built target SoapySDR
[ 80%] Built target SoapySDRUtil
[ 86%] Built target TestTimeConversion
[ 93%] Built target TestFormatParser
[100%] Built target TestKwargsMarkup

Install the project...
-- Install configuration: "Release"
-- Installing: /usr/local/share/cmake/SoapySDR/SoapySDRConfig.cmake
-- Installing: /usr/local/share/cmake/SoapySDR/SoapySDRUtil.cmake
-- Installing: /usr/local/share/cmake/SoapySDR/SoapySDRConfigVersion.cmake
-- Up-to-date: /usr/local/include/SoapySDR
-- Installing: /usr/local/include/SoapySDR/Time.hpp
-- Installing: /usr/local/include/SoapySDR/Modules.h
-- Installing: /usr/local/include/SoapySDR/Logger.hpp
-- Installing: /usr/local/include/SoapySDR/Time.h
-- Installing: /usr/local/include/SoapySDR/Errors.hpp
-- Installing: /usr/local/include/SoapySDR/Device.h
-- Installing: /usr/local/include/SoapySDR/Types.h
-- Installing: /usr/local/include/SoapySDR/Logger.h
-- Installing: /usr/local/include/SoapySDR/Config.h
-- Installing: /usr/local/include/SoapySDR/Errors.h
-- Installing: /usr/local/include/SoapySDR/Version.h
-- Installing: /usr/local/include/SoapySDR/Device.hpp
-- Installing: /usr/local/include/SoapySDR/Types.hpp
-- Installing: /usr/local/include/SoapySDR/Formats.h
-- Installing: /usr/local/include/SoapySDR/Formats.hpp
-- Installing: /usr/local/include/SoapySDR/Config.hpp
-- Installing: /usr/local/include/SoapySDR/Registry.hpp
-- Installing: /usr/local/include/SoapySDR/Constants.h
-- Installing: /usr/local/include/SoapySDR/Version.hpp
-- Installing: /usr/local/include/SoapySDR/Modules.hpp
-- Installing: /usr/local/lib64/libSoapySDR.so.0.6.0
-- Up-to-date: /usr/local/lib64/libSoapySDR.so.0.6-dev
-- Up-to-date: /usr/local/lib64/libSoapySDR.so
-- Installing: /usr/local/lib64/pkgconfig/SoapySDR.pc
-- Installing: /usr/local/bin/SoapySDRUtil
-- Set runtime path of "/usr/local/bin/SoapySDRUtil" to ""
-- Installing: /usr/local/share/man/man1/SoapySDRUtil.1
[dave@pine64 build]$ sudo ldconfig #needed on debian systems
[dave@pine64 build]$ SoapySDRUtil --info
SoapySDRUtil: error while loading shared libraries: libSoapySDR.so.0.6-dev: cannot open shared object file: No such file or directory
[root@pine64 build]# locate libSoapySDR.so.0.6-dev
/home/dave/SoapySDR/build/lib/libSoapySDR.so.0.6-dev
/usr/local/lib64/libSoapySDR.so.0.6-dev

[root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6-dev
lrwxrwxrwx 1 root root 20 Feb 11 17:07 /usr/local/lib64/libSoapySDR.so.0.6-dev -> libSoapySDR.so.0.6.0
[root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6.0
-rwxr-xr-x 1 root root 253488 Feb 11 17:07 /usr/local/lib64/libSoapySDR.so.0.6.0

I tried linking /usr/local/lib to /usr/local/lib64, didn't help.

Josh Blum

unread,
Dec 21, 2016, 3:15:03 PM12/21/16
to Dave, Pothos Users


On 12/21/2016 09:01 AM, Dave wrote:
> [dave@pine64 build]$ sudo ldconfig #needed on debian systems
> [dave@pine64 build]$ SoapySDRUtil --info
> SoapySDRUtil: error while loading shared libraries: libSoapySDR.so.0.6-dev:
> cannot open shared object file: No such file or directory
> [root@pine64 build]# locate libSoapySDR.so.0.6-dev
> /home/dave/SoapySDR/build/lib/libSoapySDR.so.0.6-dev
> /usr/local/lib64/libSoapySDR.so.0.6-dev
>
> [root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6-dev
> lrwxrwxrwx 1 root root 20 Feb 11 17:07
> /usr/local/lib64/libSoapySDR.so.0.6-dev -> libSoapySDR.so.0.6.0
> [root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6.0
> -rwxr-xr-x 1 root root 253488 Feb 11 17:07
> /usr/local/lib64/libSoapySDR.so.0.6.0
>
> I tried linking /usr/local/lib to /usr/local/lib64, didn't help.

Its probably not a library path that is searched by default. Try this:

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
SoapySDRUtil --info

So the library path can be set in the bash profile like that, or more
permanently the path can be added for ldconfig:
https://www.cyberciti.biz/faq/linux-setting-changing-library-path/

-josh

If it also helps, another option is to change the CMAKE_INSTALL_PREFIX
and LIB_SUFFIX passed to cmake to something the system is already
looking for. Whatever works best~


Dave

unread,
Dec 21, 2016, 3:46:11 PM12/21/16
to Pothos Users, da...@dtaviation.com, jo...@joshknows.com
Of course, that worked, thanks.  I shouldn't have tried it before having coffee.

But it's good it tried it, because after removing my original copy of SoapySDR and getting a new one from git, it also gave the same loading shared library error, in this case from /usr/local/lib.  No matter, now it runs.

But SoapySDRUtil finds no modules, factories, or devices.   There is currently an SDRplay plugged in and being controlled by another program.  Should Soapy have reported it?




On Wednesday, December 21, 2016 at 3:15:03 PM UTC-5, Josh Blum wrote:


On 12/21/2016 09:01 AM, Dave wrote:
> [dave@pine64 build]$ sudo ldconfig #needed on debian systems
> [dave@pine64 build]$ SoapySDRUtil --info
> SoapySDRUtil: error while loading shared libraries: libSoapySDR.so.0.6-dev:
> cannot open shared object file: No such file or directory
> [root@pine64 build]# locate libSoapySDR.so.0.6-dev
> /home/dave/SoapySDR/build/lib/libSoapySDR.so.0.6-dev
> /usr/local/lib64/libSoapySDR.so.0.6-dev
>
> [root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6-dev
> lrwxrwxrwx 1 root root 20 Feb 11 17:07
> /usr/local/lib64/libSoapySDR.so.0.6-dev -> libSoapySDR.so.0.6.0
> [root@pine64 local]# ls -lat /usr/local/lib64/libSoapySDR.so.0.6.0
> -rwxr-xr-x 1 root root 253488 Feb 11 17:07
> /usr/local/lib64/libSoapySDR.so.0.6.0
>
> I tried linking /usr/local/lib to /usr/local/lib64, didn't help.

Its probably not a library path that is searched by default. Try this:

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH
SoapySDRUtil --info

So the library path can be set in the bash profile like that, or more
permanently the path can be added for ldconfig:

Dave

unread,
Dec 21, 2016, 3:51:24 PM12/21/16
to Pothos Users, da...@dtaviation.com, jo...@joshknows.com
Nevermind that, I've found the SDRplay module.  Thanks again.

Michael Durkin

unread,
Feb 19, 2017, 11:39:54 AM2/19/17
to Pothos Users, da...@dtaviation.com, jo...@joshknows.com
I had the same problem and solution worked ...

My system is Armv7 Odroid-X2,Ubuntu 16.04 ...
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
Reply all
Reply to author
Forward
0 new messages