[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