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