Hello again, I believe I have found my solution. At least it fixes the segfault.
Adding add_definitions(-DBOOST_CHRONO_HEADER_ONLY) to the CMakeLists.txt file in upgrade-3.8 branch of gr-iio allows me to import iio from python without error. I would like to thank https://gist.github.com/DonOregano for the fix. It is in one of his trees. Chris On Sat, Apr 11, 2020 at 8:41 PM Chris Gorman <[email protected]> wrote: > > Hello All, > > I am trying to install gr-iio to build the needed libraries for a > plutosdr. I have a slightly unique situation in that I am running on > a linux from scratch machine and as a result uses shared libraries > when possible. I have followed the instructions on > https://wiki.analog.com/resources/tools-software/linux-software/gnuradio > , except I am using the upgrade-3.8 branch of gr-iio. In order to get > cmake to run, I need to pass -DBUILD_SHARED_LIBS=ON to cmake. This > causes a small problem with the resulting binaries. When I try to > load them I get errors. A simple import of iio in Python causes a > segfault. > > Python 3.7.4 (default, Dec 21 2019, 10:53:28) > [GCC 9.2.0] on linux > Type "help", "copyright", "credits" or "license" for more information. > >>> import iio > Fatal Python error: Segmentation fault > > Current thread 0x00007fbf14c7a740 (most recent call first): > File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed > File "<frozen importlib._bootstrap_external>", line 1043 in create_module > File "<frozen importlib._bootstrap>", line 583 in module_from_spec > File "<frozen importlib._bootstrap>", line 670 in _load_unlocked > File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked > File "<frozen importlib._bootstrap>", line 983 in _find_and_load > File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed > File "<frozen importlib._bootstrap>", line 1035 in _handle_fromlist > File "/opt/gnuradio/lib/python3.7/dist-packages/iio/iio_swig.py", > line 13 in <module> > File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed > File "<frozen importlib._bootstrap_external>", line 728 in exec_module > File "<frozen importlib._bootstrap>", line 677 in _load_unlocked > File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked > File "<frozen importlib._bootstrap>", line 983 in _find_and_load > File "/opt/gnuradio/lib/python3.7/dist-packages/iio/__init__.py", > line 36 in <module> > File "<frozen importlib._bootstrap>", line 219 in _call_with_frames_removed > File "<frozen importlib._bootstrap_external>", line 728 in exec_module > File "<frozen importlib._bootstrap>", line 677 in _load_unlocked > File "<frozen importlib._bootstrap>", line 967 in _find_and_load_unlocked > File "<frozen importlib._bootstrap>", line 983 in _find_and_load > File "<stdin>", line 1 in <module> > Segmentation fault > > When I try to run iio_swig.py from within gdb I get an error > indicating that linking has gone wrong somehow. > > (gdb) run /opt/gnuradio/lib/python3.7/dist-packages/iio/iio_swig.py > Starting program: /usr/bin/python3 > /opt/gnuradio/lib/python3.7/dist-packages/iio/iio_swig.py > [Thread debugging using libthread_db enabled] > Using host libthread_db library "/lib/libthread_db.so.1". > Traceback (most recent call last): > File "/opt/gnuradio/lib/python3.7/dist-packages/iio/iio_swig.py", > line 15, in <module> > import _iio_swig > ImportError: /opt/gnuradio/lib/libgnuradio-iio.so...: undefined > symbol: _ZN5boost6chrono12steady_clock3nowEv > [Inferior 1 (process 10709) exited with code 01 > > _ZN5boost6chrono12setady_clock3nowEv exists in > /usr/lib/libboost_chrono.so , but that library is not used by gr-iio > as far as I can see. (I can't find > _ZN5boost6chrono12setady_clock3nowEv in any of the requested > libraries: date_time; program_options; filesystem; system; regex; > thread; unit_test_framework.) > > I'm attaching my build.log in case the fix can be found by perusing > it. (It hasn't helped me yet.) Any ideas on how to fix my problem > would be appreciated. > > Thanks in advance. > > Chris
