Here are the steps I use to add a block. I piggyback onto
NOTE: I’m not saying this is the “right” way, but it works for me.
Copy test.cc, test.h, and test.i to gnuradio-core/src/lib/general
Edit gnuradio-core/src/lib/general/general.i, and add 2 new “include”
lines (one for test.h and one for test.i)
Edit gnuradio-core/src/lib/general/Makefile.am, and add the 3 new
names in the appropriate place
In gnuradio-core, run “make” and “make install”
Hope this helps!
From: Jonas Hodel [mailto:[email protected]]
Sent: Wednesday, November 29, 2006 1:05 PM
To: Eric B.
Cc: [email protected]
Subject: Re: [Discuss-gnuradio] Multiple C files required by single C++
block.How to build?
Thanks to both Eric and Daniel for your prompt help.
Yes this does make sense and it was the first thing I tried. After it
work with my files I went right back to basics (I am building a la
gr-howto-write-a-block). I created very simple .h/.c files as a test.
printf(“this is a test, proof is in the pudding\n”);
Within “howto_square2_ff.h” I added #include “test.h”.
Within “howto_square2_ff.cc” I added a call to jonas_test(), located in
constructor howto_square2_ff ().
I added test.c to the “_howto_la_SOURCES” entry in
Finally: “make clean”, “make” and “make check”.
This results in:
undefined symbol: _Z10jonas_testv
I tired other variations (creating test.i, included in howto.i etc) but
must be missing something fundamental.
Thanks again for you help!
Eric B. wrote:
On Wed, Nov 29, 2006 at 10:39:20AM +1030, Daniel O’Connor wrote:
On Wednesday 29 November 2006 09:26, Jonas Hodel wrote:
I have some existing C-functions which I would like to include in a C+
signal processing block. The complication is that these C-functions are
located in a number of different files. I have created a C++ block which
uses these functions. It appears to build fine but when I come to
include the new block in my python script I get an “undefined symbol”
error referring to one of the low level C-functions (I think). In short,
is it possible to use my existing C-files unchanged (included in my C++
block)? If so what approach is necessary to make this work/build
You need to compile those .c files into .o files and then link all your
files together then it should work fine.
I don’t know how to get the GNURadio build system to do that for you
(probably just appending the names of the .c files to the list of source
files will do it though)
This is correct. You just need to arrange so that those files end up
in the same shared library as the block that’s using them.
Just add the the .c files to the _la_SOURCES entry in the
Are you building this outside of the main tree a la
gr-howto-write-a-block, or in the main tree? The idea is the same in
Does this make sense?
This email, including any attachments, is only for the intended
It is subject to copyright, confidential and may be the subject of legal
other privilege, none of which is waived or lost by reason of this
transmission. If the receiver is not the intended addressee, please
our apologies, notify us by return, delete all copies and perform no
act on the email. Unfortunately, we cannot warrant that the email has
been altered or corrupted during transmission.