I have a custom block which uses the GSL libraries to compute the FFT of
a sequence. When I run the flow-graph containing my custom block, I get
the following error.
Traceback (most recent call last):
File “/home/wlab/my grc files/top_block.py”, line 17, in
import howto
File “/usr/local/lib/python2.7/dist-packages/howto/init.py”, line
45, in
from howto_swig import *
File “/usr/local/lib/python2.7/dist-packages/howto/howto_swig.py”, line
26, in
_howto_swig = swig_import_helper()
File “/usr/local/lib/python2.7/dist-packages/howto/howto_swig.py”, line
22, in swig_import_helper
_mod = imp.load_module(’_howto_swig’, fp, pathname, description)
ImportError: /usr/local/lib/libgnuradio-howto.so: undefined symbol:
gsl_fft_complex_radix2_forward
I kind of know that the error is related to use of GSL within gnuradio
since when I comment the below lines: #include <gsl/gsl_fft_complex.h>
gsl_fft_complex_radix2_forward (data_fft_1, 1, d_N);
I get no error and flow-graph runs normal.
So, I think either the GSL header files are not being located by gcc or
somehow the swig interface is broken. Does anyone has any suggestions?
forgot to cc my response to the list, so, here it is:
If you expose gsl routines in your header, and you give this header to
swig, swig tries to “export” everything it sees in the header.
You can probably make the error go away by adding gsl libraries to
GR_SWIG_LIBRARIES (set this before the call to GR_SWIG_MAKE).
I have changed the below line in CMakeLists.txt file in
gnuradio/gr-howto-write-a-block/swig:
set(GR_SWIG_LIBRARIES gnuradio-howto)
to:
set(GR_SWIG_LIBRARIES gnuradio-howto gsl)
Now, I get the following error when I run my flow-graph in GRC:
Traceback (most recent call last):
File “/home/wlab/Desktop/mahboob-grc-files/top_block.py”, line
15, in
import howto
File “/usr/local/lib/python2.7/dist-packages/howto/init.py”, line
45, in
from howto_swig import *
File “/usr/local/lib/python2.7/dist-packages/howto/howto_swig.py”, line
26, in
_howto_swig = swig_import_helper()
File “/usr/local/lib/python2.7/dist-packages/howto/howto_swig.py”, line
22, in swig_import_helper
_mod = imp.load_module(’_howto_swig’, fp, pathname, description)
ImportError: /usr/local/lib/libgsl.so.0: undefined symbol: cblas_dasum
So now, is “cblas_dasum” not being identified? Why? Any suggestions?
I have made it to work by changing below line in CMakeLists.txt file in
gnuradio/gr-howto-write-a-block/swig:
set(GR_SWIG_LIBRARIES gnuradio-howto gsl)
to:
set(GR_SWIG_LIBRARIES gnuradio-howto gsl gslcblas)
Thanks Josh.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.