Monday, November 8, 2021

Re: Undefined symbol _ZN2gr12msg_accepter4postEN5boost13intrusive_ptrIN3pmt8pmt_baseEEES5_

Hi John,

Welcome to GNU Radio!

On 04/11/2021 21.35, John Coppens wrote:
> I've been suffering trying to install gnuradio. I tried different versions, and different
> combinations with gr-osmosdr, as I don't see a list of which versions go together.

For gnuradio 3.8 you need to use gr3.8 branch and for gnuradio 3.9 you need to use the master branch.

> Using, eg. gr-osmosdr.so.0.2.0 and gnuradio-3.8.4.0, which I have compiled successfully

> File "/usr/lib64/python3.9/site-packages/osmosdr/osmosdr_swig.py", line 13, in <module>
> from . import _osmosdr_swig
> ImportError: /usr/lib64/libgnuradio-osmosdr.so.0.2.0: undefined symbol: _ZN2gr12msg_accepter4postEN5boost13intrusive_ptrIN3pmt8pmt_baseEEES5_
>
> c++filt translates that symbol to gr::msg_accepter::post(boost::intrusive_ptr<pmt::pmt_base>, boost::intrusive_ptr<pmt::pmt_base>)

gr::msg_accepter::post() function is implemented in libgnuradio-runtime.so, so first check that it is there by executing the following commands (provide the full output)

find /usr/ -name "libgnuradio-runtime.so*"
ldd -r /usr/lib64/libgnuradio-osmosdr.so.0.2.0
ldd -r /usr/lib64/libgnuradio-runtime.so
objdump -T /usr/lib64/libgnuradio-runtime.so | grep _ZN2gr12msg_accepter4postEN5boost13intrusive_ptrIN3pmt8pmt_baseEEES5_
objdump -T /usr/lib64/libgnuradio-runtime.so | grep msg_accepter | grep post
objdump -TC /usr/lib64/libgnuradio-runtime.so | grep msg_accepter | grep post

and then try a clean rebuild with your current gnuradio and boost versions. Go in the gr-osmosdr source directory, delete the build directory and start from scratch.

P.S.
Also make sure that you don't have multiple gnuradio versions installed at the same time in /usr/ and /usr/local/


Regards,
Vasil

No comments:

Post a Comment