Forum: GNU Radio Problem with "How-to-write-a-block"-tutorial

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Emil M. (Guest)
on 2009-02-18 12:31
(Received via mailing list)
Hi again, so ive done the tutorial and i got the make check to pass the
test
the howto module is obviously installed.

So for a second tutorial i made a simple change to blocks i simply (like
someone else here had done) changed the name of everything to a new
module
("howto2) and changed it from computing the square to computing the
input
times 2. i.e. doubling it.

But when im suppose to do the test it seems the module howto2 isnt
installed, ive made all the necessary changes to the makefile.am and the
howto.i files in the /lib folder.

I also made a new test file called qa_howto_2.py and changed the
makefile in
/python folder so that it whould run that test and this seems to work
its
just that howto2 module isnt installed.

Anyone knows why my howto2 module isnt installing?
Emil M. (Guest)
on 2009-02-19 09:49
(Received via mailing list)
Hi and thanks for the help, yes ive run it (and ive renamed the block to
'test' instead of 'howto_2' but i still get something wrong obviously
because when running the test script i get this error:

  File "./qa_test.py", line 6, in <module>
    from gnuradio import gr, gr_unittest, test
  File "/Library/Python/2.5/site-packages/gnuradio/test.py", line 21, in
<module>
    import _test
ImportError: dlopen(/Library/Python/2.5/site-packages/gnuradio/_test.so,
2):
Symbol not found: __ZTV14test_double_ff
  Referenced from: /Library/Python/2.5/site-packages/gnuradio/_test.so
  Expected in: dynamic lookup

it seems like there is something wrong in the swig-generated _test.so
file
but how to fix that i have no idea?




2009/2/18 Dominic S. <removed_email_address@domain.invalid>
Martin B. (Guest)
on 2009-02-19 10:37
(Received via mailing list)
On Wed, Feb 18, 2009 at 03:39:52PM +0100, Emil M. wrote:
> Symbol not found: __ZTV14test_double_ff
>   Referenced from: /Library/Python/2.5/site-packages/gnuradio/_test.so
>   Expected in: dynamic lookup
>
> it seems like there is something wrong in the swig-generated _test.so file but
> how to fix that i have no idea?

I've seen a couple of these recently, usually the make process messed up
somewhere along the row and didn't apply recent changes or something
like that. The effect is, the linker links everything it can't find and
doesn't realise there's "something missing".
So far I've always managed to get around this problem by making clean
and restarting the process. Check the make logs that your code gets
compiled
w/o any errors. Of course, you might still have a bug in your Makefile -
one way to inspect libraries is objdump (e.g. objdump -t _tool.so). You
should definitely triple check your Makefile.am.

MB
Eric B. (Guest)
on 2009-02-19 12:19
(Received via mailing list)
On Wed, Feb 18, 2009 at 03:39:52PM +0100, Emil M. wrote:
> Symbol not found: __ZTV14test_double_ff
>   Referenced from: /Library/Python/2.5/site-packages/gnuradio/_test.so
>   Expected in: dynamic lookup
>
> it seems like there is something wrong in the swig-generated _test.so file
> but how to fix that i have no idea?
>


$ c++filt _ZTV14test_double_ff
vtable for test_double_ff

Are you sure you've got code for the class named test_double_ff linked
into the shared library you're building?

Eric
Emil M. (Guest)
on 2009-02-19 15:12
(Received via mailing list)
2009/2/18 Eric B. <removed_email_address@domain.invalid>

> > ImportError: dlopen(/Library/Python/2.5/site-packages/gnuradio/_test.so,
>
> $ c++filt _ZTV14test_double_ff
> vtable for test_double_ff
>
> Are you sure you've got code for the class named test_double_ff linked
> into the shared library you're building?
>
> Eric
>


Ive linked everythin in the same way as in the howto_square_ff example,
what
files could i have missed something in to not get the test_double_ff
class
linked?

And well if its any reason to the problem this is how my makefile looks:

#
# Copyright 2004,2005,2006,2008 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# GNU Radio is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# GNU Radio is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU Radio; see the file COPYING.  If not, write to
# the Free Software Foundation, Inc., 51 Franklin Street,
# Boston, MA 02110-1301, USA.
#

include $(top_srcdir)/Makefile.common

# Install this stuff so that it ends up as the gnuradio.test module
# This usually ends up at:
#   ${prefix}/lib/python${python_version}/site-packages/gnuradio

ourpythondir = $(grpythondir)
ourlibdir    = $(grpyexecdir)

AM_CPPFLAGS = $(STD_DEFINES_AND_INCLUDES) $(PYTHON_CPPFLAGS)

SWIGPYTHONARGS = $(SWIGPYTHONFLAGS) $(SWIGGRFLAGS)

ALL_IFILES =                 \
    $(LOCAL_IFILES)            \
    $(NON_LOCAL_IFILES)

NON_LOCAL_IFILES =            \
    $(GNURADIO_CORE_INCLUDEDIR)/swig/gnuradio.i


LOCAL_IFILES =                 \
    $(top_srcdir)/src/lib/test.i

# These files are built by SWIG.  The first is the C++ glue.
# The second is the python wrapper that loads the _test shared library
# and knows how to call our extensions.

BUILT_SOURCES =             \
    test.cc            \
    test.py

# This gets howto.py installed in the right place
ourpython_PYTHON =            \
    test.py

ourlib_LTLIBRARIES = _test.la

# These are the source files that go into the shared library
_test_la_SOURCES =             \
    test.cc            \
    test_double_ff.cc

# magic flags
_test_la_LDFLAGS = $(NO_UNDEFINED) -module -avoid-version

# link the library against some comon swig runtime code and the
# c++ standard library
_test_la_LIBADD =             \
    $(PYTHON_LDFLAGS)        \
    -lstdc++

test.cc test.py: $(LOCAL_IFILES) $(ALL_IFILES)
    $(SWIG) $(SWIGPYTHONARGS) -module test -o test.cc $(LOCAL_IFILES)

# These headers get installed in ${prefix}/include/gnuradio
grinclude_HEADERS =            \
    test_double_ff.h


# These swig headers get installed in ${prefix}/include/gnuradio/swig
swiginclude_HEADERS =             \
    $(LOCAL_IFILES)


MOSTLYCLEANFILES = $(BUILT_SOURCES) *.pyc

# Don't distribute output of swig
dist-hook:
    @for file in $(BUILT_SOURCES); do echo $(RM) $(distdir)/$$file; done
    @for file in $(BUILT_SOURCES); do $(RM) $(distdir)/$$file; done
Emil M. (Guest)
on 2009-02-20 11:33
(Received via mailing list)
Im still baning my head against the wall here, ive linked everything
exactly
like in the example but it just gives the same error message on running
the
tests.

2009/2/19 Emil M. <removed_email_address@domain.invalid>
Martin B. (Guest)
on 2009-02-20 16:04
(Received via mailing list)
On Fri, Feb 20, 2009 at 10:32:03AM +0100, Emil M. wrote:
> Im still baning my head against the wall here, ive linked everything exactly
> like in the example but it just gives the same error message on running the
> tests.
>

If banging your head doesn't help (I find a wooden table most
effective), check that the Makefile gets generated properly. If not,
restart from scratch with 'make distclean && ./bootstrap &&
./configure'.

MB
Mir A. (Guest)
on 2009-02-20 17:51
(Received via mailing list)
It happened to me once and I found that there was a problem with the way
I
wrote the SWIG interface file. Make sure that the .i file is correct. I
hope
it helps.

Thanks,
Ali
This topic is locked and can not be replied to.