[Paraview] LSB 3.0 with Qt 4.3.2

Clinton Stimpson clinton at elemtech.com
Wed Nov 28 10:53:06 EST 2007


ParaView binaries aren't using LSB.  I was just bringing it up in case 
your app failed to run on other distributions because of using 
distribution specific features (but that might be less likely now that 
you say you're using Qt).

I've seen a few big projects successfully distributing binaries with 
shared libraries for several linux distributions (without LSB).  The 
main issue is to package your shared libraries that you don't want to 
assume the user has (or don't want to assume the system would have 
compatible ones), and use LD_LIBRARY_PATH.

The LSB Qt4 module looks like it is for Qt 4.1.  If you want to use 
this, but have problems, you probably need to ask the Qt or LSB folks.

If you're using Qt, then you probably want to read up on this 
http://doc.trolltech.com/deployment.html
It talks about the LD_LIBRARY_PATH thing among others.

Clint

Jens wrote:
> Hi Clint,
>
> your mail sounded that interesting, that I tried to use LSB 3.0 for my
> Qt4 application, too. I downloaded the lsb3.0.rpms and tried to compile
> Qt4.3.2 using the platform-spec-file "linux-lsb-g++" delivered with Qt4
>
> But :( Qt4 could not compile with lsb-3.0. It fails because the command
> 'fstatf()' is not supported by lsb-3.0.
>
> What lsb-version is paraview using?
> Does Qt4 need some modification to compile with lsb?
>
> Thanks for any help/comments
>
> Greetings
> Jens
>
>
> CONFIGURE:
> ./configure -platform linux-lsb-g++ -release -no-qt3support -qt-zlib
> -qt-gif -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -no-nis -no-rpath
> -no-separate-debug-info -prefix /usr/local/qt4-lsb3.0
>
> COMPILATION-ERROR:
> lsbc++ -o "/usr/local/qt-x11-opensource-src-4.3.2/bin/qmake" project.o
> property.o main.o makefile.o unixmake2.o unixmake.o mingw_make.o
> option.o winmakefile.o projectgenerator.o meta.o makefiledeps.o
> metamakefile.o xmloutput.o pbuilder_pbx.o borland_bmake.o msvc_dsp.o
> msvc_vcproj.o msvc_nmake.o msvc_objectmodel.o qstring.o qtextstream.o
> qiodevice.o qglobal.o qbytearray.o qbytearraymatcher.o qdatastream.o
> qbuffer.o qlistdata.o qfile.o qfsfileengine_unix.o
> qfsfileengine_iterator_unix.o qfsfileengine.o qfsfileengine_iterator.o
> qregexp.o qvector.o qbitarray.o qdir.o qdiriterator.o quuid.o qhash.o
> qfileinfo.o qdatetime.o qstringlist.o qabstractfileengine.o
> qtemporaryfile.o qmap.o qmetatype.o qsettings.o qlibraryinfo.o
> qvariant.o qvsnprintf.o qlocale.o qlinkedlist.o qurl.o qnumeric.o
> qcryptographichash.o qscriptasm.o qscriptast.o qscriptastvisitor.o
> qscriptcompiler.o qscriptecmaarray.o qscriptecmaboolean.o
> qscriptecmacore.o qscriptecmadate.o qscriptecmafunction.o
> qscriptecmaglobal.o qscriptecmamath.o qscriptecmanumber.o
> qscriptecmaobject.o qscriptecmaregexp.o qscriptecmastring.o
> qscriptecmaerror.o qscriptcontext_p.o qscriptengine.o qscriptengine_p.o
> qscriptextenumeration.o qscriptextvariant.o qscriptcontext.o
> qscriptfunction.o qscriptgrammar.o qscriptlexer.o qscriptclassdata.o
> qscriptparser.o qscriptprettypretty.o qscriptsyntaxchecker.o
> qscriptvalue.o qscriptvalueimpl.o qscriptvalueiterator.o
> --lsb-shared-libs=Xrender:Xrandr:Xfixes:Xcursor:Xinerama:freetype
> qsettings.o: In function `isLikelyToBeNfs(int)':
> qsettings.cpp:(.text+0x198b): undefined reference to `fstatfs'
> collect2: ld gab 1 als Ende-Status zurück
> gmake: *** [/usr/local/qt-x11-opensource-src-4.3.2/bin/qmake] Fehler 1
>
> clinton at elemtech.com schrieb:
>   
>> On Monday 26 November 2007 10:53:12 am jcremy at itv.rwth-aachen.de wrote:
>>     
>>> Hello ParaView Developers,
>>>
>>> I'm wondering how ParaView does the library linking.
>>> The binary is just ~75k, so it definitely doesn't use static linking. But
>>> all over the net it says that precompiled binaries in linux need static
>>> linked libraries (which results in a huge binary file). 
>>>       
>> You don't *need* static linking to distribute binaries on Linux.
>>
>>     
>>> I see that ParaView 
>>> comes with a bunch of libraries in the /lib folder. If I try this in my own
>>> project, it still doesn't work on other distributions. It seems as if the
>>> linker uses system libraries before the ones I supplied in my application
>>> directory. I took a look at the ParaView code but didn't see anything that
>>> helped my to understand. So, how did you solve this?
>>>       
>> The paraview binary is just a wrapper that sets LD_LIBRARY_PATH to the lib 
>> folder.  So if there is a library on the system *and* in the paraview lib 
>> folder, the one in the paraview lib folder is used.
>> Some other projects use a shell script to set LD_LIBRARY_PATH then invoke the 
>> real executable.
>>
>> You may also want to read up on LSB.
>> http://en.wikipedia.org/wiki/Linux_Standard_Base
>> If you use rpm/deb, you don't have to ship a copy of the system libraries for 
>> your application.
>>
>> Clint
>> _______________________________________________
>> ParaView mailing list
>> ParaView at paraview.org
>> http://www.paraview.org/mailman/listinfo/paraview
>>
>>     



More information about the ParaView mailing list