[PD-dev] flext sndobj external problems

Conor J Curran forward at forwind.net
Tue Sep 26 00:29:36 CEST 2006


Hi folks,
I have already posted this to the flext mailing list but I thought
perhaps someone on this list has had similar problems and hence a
pointer as to where to go next.
My problem is that even though I can compile sndobj flext based
externals, once I try to load these in PD sndobj symbols are
unrecognized (see below for PD error output).

My setup is the following.
pd installed to /usr/lib/pd (installed from synaptic with a src folder
copied to the root of the pd install folder from the tar download from
sourceforge). Ubuntu dapper using alsa (echo layla 24 module)
I have both the sndobj lib and the dev sndobj lib installed from
synaptic. 
In my dev folder flext resides extracted from the 0.5.0 tar. There is
also a SndObj-2.6.3 folder with the source for SndObj. I can compile
this using scons. When I tried to change the nostaticlib setting to
false ('0') inorder to produce a static lib I get the following error.

>scons: *** Target `/usr/local/lib/libsndobj.so' of Install() is a file,
>but should be a directory.  Perhaps you have the Install() arguments
>backwards?
>File "SConstruct", line 274, in ?

Therefore the libsndobj.a I am attempting to statically link during the
compilation of flext is the one which was installed from synaptic
i.e /usr/lib/sndobj.a . Firstly is this a problem, should i compile this
lib from scratch and use this for compiling into flext. 

The headers in this SndObj-2.6.3 source folder reside in the
include/SndObj. I have searched the flext folder and it seems the build
system assumes the path set in the config.txt is the direct path to the
*.h's. Please correct me if I am wrong here. Therefore in my config.txt
I am using the path straight to this location.
/dev/SndObj-2.6.3/include/SndObj
The library is also linked using -lsndobj.
I presume this is picking up the libsndobj.a. 


The funny thing I don't understand is this. In the output of the
compilation -lsnd0bj is mentioned.. Therefore one would assume that
the library is statically linked into the flext binaries ? Therefore
when I check inside the different flavours of flext.a's produced in the
build directory (ar -t *.a) there is no sign of any sndobj binaries. 

But when I try to compile the external with all of it's snd related
objects it compiles fine with flext !

My newly compiled external which I am attempted to load in pd then does
not work (understandably if there is no binary linked to deal with
sndobj stuff) , I get the following
>>/usr/lib/pd/extra/shrreverb~.pd_linux: /usr/lib/pd/extra/shrreverb~.pd_linux: >>undefined symbol: _ZTI5SndIO

But when i try to load in pd some previously compiled sndobj external in
pd (SndObj1~) it loads fine. This makes me think the libsndobj.a is
linked into the this old external as opposed to being available in the
flext lib as i would have assumed to be the case? 
the fact that I can compile fine points at the fact that all the
external needs is the flextsndobj header during compilation and at
runtime the libflext would link the external to what binaries it needs?

Either way I'm lost as to what to try next. 

does Anyone have any light to through on this. 

Conor








More information about the Pd-dev mailing list