[flext] problem with static linking flext on Linux

Thomas Grill gr at grrrr.org
Sun Apr 7 20:50:09 CEST 2013


Hi Ico,
i still don't get the problem - since static and dynamic library  
versions of flext have different names, so they cannot possibly be  
confused by the build system.
As i see it, an easy solution could be to point the flext build system  
to the location of your build of the flext library, e.g. as in

LIBPATH=-L../flext/pd-darwin/release-single sh ../flext/build.sh pd gcc

Does this solve the issue?
gr~~~

--
Thomas Grill
http://grrrr.org



Am 07.04.2013 um 15:03 schrieb Ivica Bukvic:

> I am trying not to require sudo access while building pd-l2ork deb  
> and trying to include flext- dependent libs, so installing system- 
> wide is not an option. The problem for me, however, is not  
> necessarily that the flext installer is not finding the dynamic  
> library but that it keeps trying to link it even though I've  
> manually statically linked it. In other words, the suggested  
> solution you have for OSX does not work because package.txt is read  
> before LIBS variable is appended with -ldynamic lib.so, so  
> package.txt can never truly (entirely) override it. I am also  
> wondering if building an external that links both static and dynamic  
> library is going to work on a system that does not have flext  
> installed (even If it was successfully built on a dev system).
>
> Is there was a way to define a variable just like you have SHARED  
> variable for the flext installer this would solve the problem (e.g.  
> STATIC). Another way would be to simply have the installer read  
> package.txt file after it has finished appending LIBS variable, so  
> one could truly override LIBS variable that contains dynamic linker  
> command.
>
> Another, more complicated solution would be to in addition to having  
> LIBS override option to dynamically provide info to the package.txt  
> whether the build is single, multi, or shared, so a manual LIBS  
> entry would look like LIBS=<manual-path>/STATICLIB where the  
> STATICLIB variable would be automatically converted at compile-time  
> to an appropriate version of static library (single, multi, etc).
>
> Any chance this could be implemented sometime soon? If so, it would  
> make including flext externals in pd-l2ork Debian package a lot  
> easier.
>
> Thanks!
>
> On Apr 7, 2013 6:58 AM, "Thomas Grill" <gr at grrrr.org> wrote:
> Hi Ico,
> i can't really remember what i wrote on the fluid~ topic. I guess  
> that was years ago and the context might have changed in the meantime.
> I think that your case should be easy to resolve.
>
> First, flext libraries libflext-pd_s.a or libflext-pd_t.a are always  
> static, while libflext-pd.dylib is the shared version.
> Consequently linking with the -lflext-pd_s option will always be  
> static.
>
> In your console printout the libflext-pd_s.a is not found - most  
> probably because it is not installed in any of the standard system  
> locations (like /usr/local/lib).
> Is there any reason why you haven't installed them? This is normally  
> done by calling the flext build system with  "sudo sh build.sh pd  
> gcc install" from the flext folder.
>
> hope this helps! all the best,
> gr~~~
>
> --
> Thomas Grill
> http://grrrr.org
>
>
>
> Am 07.04.2013 um 08:21 schrieb Ivica Ico Bukvic:
>
>> Hey Thomas,
>>
>> Hope all is well. I followed some of your previous posts on this  
>> topic that pertain to OSX and tried adjusting project.txt file for  
>> a custom build of fluid~ external for pd but am having no luck in  
>> suppressing -lflext-pd_* being tacked at the end of the build  
>> process. Below are my packa.txt file and the output:
>>
>> NAME=fluid~
>> PDPATH=../../../pd
>> LIBS= ../../grill/trunk/flext/libbuild/lib/libflext-pd_s.a*
>> CFLAGS+=-I../../grill/trunk/flext/source/
>> BUILDDIR=build
>> SRCDIR=fluid
>> SRCS=main.cpp
>>
>> (I am trying to make the build as automated as possible, hence the  
>> use of wildcard)
>>
>> The output is as follows:
>>
>>
>> ico at zen:~/Downloads/PureData/pure-data/externals/footils/fluid 
>> $ ../../grill/trunk/flext/build.sh pd gcc build
>> make -f ../../grill/trunk/flext/buildsys/gnumake-sub.mak   
>> PLATFORM=lnx RTSYS=pd COMPILER=gcc BUILDPATH=../../grill/trunk/ 
>> flext/buildsys/ PKGINFO=package.txt BUILDCLASS=ext  
>> USRCONFIG=config.txt USRMAKE=build/gnumake-lnx-gcc.inc  
>> TARGETMODE=release TARGETTYPE=single _build_
>> make[1]: Entering directory `/home/ico/Downloads/PureData/pure-data/ 
>> externals/footils/fluid'
>> g++ -pthread -shared  -Wl,-S -L../../../pd/bin -L./libbuild/lib -o  
>> pd-linux/release-single/fluid~.pd_linux   pd-linux/release-single/ 
>> main.opp  ../../grill/trunk/flext/libbuild/lib/libflext-pd_s.a* - 
>> lfluidsynth -lflext-pd_s
>> /usr/bin/ld: cannot find -lflext-pd_s
>> collect2: ld returned 1 exit status
>> make[1]: *** [pd-linux/release-single/fluid~.pd_linux] Error 1
>> make[1]: Leaving directory `/home/ico/Downloads/PureData/pure-data/ 
>> externals/footils/fluid'
>> make: *** [build-release-single] Error 2
>>
>> If I manually run the last line without lflext-pd_s, the external  
>> builds properly and works just fine. Any pointers as to how I could  
>> suppress the automatic dynamic linking done by flext build system?
>>
>> Also, any suggestions how to make static linking reflect the kind  
>> of build I wish to use (single/multi/etc.)?
>>
>> Please advise.
>>
>> -- 
>> Ivica Ico Bukvic, D.M.A
>> Composition, Music Technology
>> Director, DISIS Interactive Sound & Intermedia Studio
>> Director, L2Ork Linux Laptop Orchestra
>> Head, ICAT IMPACT Studio
>> Virginia Tech
>> Department of Music
>> Blacksburg, VA 24061-0240
>> (540) 231-6139
>> (540) 231-5034 (fax)
>> disis.music.vt.edu
>> l2ork.music.vt.edu
>> ico.bukvic.net
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://grrrr.org/pipermail/flext/attachments/20130407/289ab9ff/attachment.htm>


More information about the flext mailing list