I am getting a link error when making my Out-of-Tree module.
I apologize in advance for the length of this, my first post to this list. I get the daily 'digest' version.
This Out of Tree module was done with gr_modtool and cmake following the outline given in http://gnuradio.org/redmine/projects/gnuradio/wiki/OutOfTreeModules which, after some figuring out how my setup was missing some things, worked (make and install and runs in GRC) on another simpler block in this same module.
This is a re-run of the make spew that fails to link:
[jmurphy@localhost build]$ make
Scanning dependencies of target gnuradio-comso
[ 7%] Building CXX object lib/CMakeFiles/gnuradio-comso.dir/ofdm_rx_impl.cc.o
Linking CXX shared library libgnuradio-comso.so
[ 14%] Built target gnuradio-comso
Linking CXX executable test-comso
libgnuradio-comso.so: undefined reference to `gr::fft::fft_complex::execute()'
collect2: error: ld returned 1 exit status
make[2]: *** [lib/test-comso] Error 1
make[1]: *** [lib/CMakeFiles/test-comso.dir/all] Error 2
make: *** [all] Error 2
[jmurphy@localhost build]$
Note - it seems to me this is saying it linked my custom code to the fft but failed to link the test code? Or am I mis-reading this?
I get the same error when I throw a #define switch in my block implementation header to directly use fft_impl_fft_complex instead of gr::fft::fft_complex. To make this work, such as it is, I had download the fft_impl_fft.h header file and edit as follows.
//#include <fft/api.h>
//#include <gr_complex.h>
#include <gnuradio/fft/api.h>
#include <gnuradio/gr_complex.h>
There may be a clue there, but I do not understand enough to know.
Then here is the make error for this version, essentially identical.
[jmurphy@localhost build]$ make
Scanning dependencies of target gnuradio-comso
[ 7%] Building CXX object lib/CMakeFiles/gnuradio-comso.dir/ofdm_rx_impl.cc.o
Linking CXX shared library libgnuradio-comso.so
[ 14%] Built target gnuradio-comso
Linking CXX executable test-comso
libgnuradio-comso.so: undefined reference to `fft_impl_fft_complex::execute()'
collect2: error: ld returned 1 exit status
make[2]: *** [lib/test-comso] Error 1
make[1]: *** [lib/CMakeFiles/test-comso.dir/all] Error 2
make: *** [all] Error 2
[jmurphy@localhost build]$
I run GNU Radio Comapnion with FFT GUI's and they work fine, so clearly something is executing FFT's although that may be unrelated. I do not have any problems, for now, with any In-Tree heir blocks or with any Out-Of-Tree blocks that do not link to the FFT libraries.
Also, this block uses the get_inbuf() and get_outbuf() functions for the gnuradio fft classes, under either header mentioned above, with no linker issues reported.
Module name is comso, block name is ofdm_rx, block is a C++ general-type block
I am running Fedora 20 with the LXDE desktop environment
GNU Radio is version 3.7.3 installed using yum from the default Fedora repositories
linux kernel: 3.15.6-200.fc20.x86_64
Some possibly-relevant Fedora packages already installed and latest version:
gnuradio-3.7.3-1.fc20.x86_64
gnuradio-devel-3.7.3-1.fc20.x86_64
fftw-3.3.4-3.fc20.x86_64
fftw-devel-3.3.4-3.fc20.x86_64
fftw-libs-3.3.4-3.fc20.x86_64
fftw-libs-single-3.3.4-3.fc20.x86_64
fftw-libs-double-3.3.4-3.fc20.x86_64
fftw-libs-quad-3.3.4-3.fc20.x86_64
fftw-libs-long-3.3.4-3.fc20.x86_64
Anyone know what I need to do from here to make this build successfully? Am I still missing some file or something is still pointing to the wrong place?
Thanks.
-John
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
No comments:
Post a Comment