| Trolltech Home | Qt-interest Home | Recent Threads | All Threads | Author | Date | |
| All threads index page 5 | |
Hi trolls, If I try to compile Qt4.3.2 with LSB 3.0 I get the following error: qsettings.o: In function `isLikelyToBeNfs(int)': qsettings.cpp:(.text+0x198b): undefined reference to `fstatfs' fstatfs() seems not to be part of LSB 3.0 (I cannot find it in any include-file) Any idea if Qt4.3.2 ist LSB 3.0 conform? Anyone out there who has compiled a LSB-version of Qt4? Greetings Jens Henrik ================ 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 -- [ signature omitted ]
Em Wednesday 28 November 2007 17:31:09 Jens escreveu: > Any idea if Qt4.3.2 ist LSB 3.0 conform? > Anyone out there who has compiled a LSB-version of Qt4? Qt is not LSB-compliant. There will be no LSB-compliant versions of Qt. Qt, however, is part of LSB. Which means you can have LSB-compliant applications that link to Qt. Currently, Qt 3.3.x and 4.2.x are in the standard. -- [ signature omitted ]
Attachment:
signature.asc
Description: This is a digitally signed message part.
Em Wednesday 28 November 2007 19:03:04 Thiago Macieira escreveu: > Qt, however, is part of LSB. Which means you can have LSB-compliant > applications that link to Qt. Currently, Qt 3.3.x and 4.2.x are in the > standard. My mistake: it's Qt 4.1.x that is part of the LSB. -- [ signature omitted ]
Attachment:
signature.asc
Description: This is a digitally signed message part.
Hi Thiago, thanks for the infos. Somehow the lsb-guys managed to compile Qt4 with lsb-tools. And I found an lsb-plattform in qt4/mkspecs/linux-lsb-g++. It seems as if qt4 tries to become lsb 3.1 compliant. Thats why I tried to compile qt4.3.2 with the lsb-sdk. But it fails :( because of conflicting declarations between /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in corelib/io/qfilesystemwatcher_inotify.cpp Any idea what to do? Greetings Jens ============================= Here my script: #!/bin/sh QT4LIBSDIR=/usr/local/qt-x11-opensource-src-4.3.2_lsb31/lib export PATH=/opt/lsb/bin:$PATH export LD_LIBRARY_PATH=/opt/lsb/lib:$LD_LIBRARY_PATH export LSBCC_SHAREDLIBS=\ libQt3Support:\ libQtAssistantClient:\ libQtCore:\ libQtDBus:\ libQtDesignerComponents:\ libQtDesigner:\ libQtGui:\ libQtNetwork:\ libQtOpenGL:\ libQtScript:\ libQtSql:\ libQtSvg:\ libQtTest:\ libQtUiTools:\ libQtXml export LSB_SHAREDLIBPATH=$QT4LIBSDIR #export LSBCC_INCLUDES #export LSBCXX_INCLUDES ./configure \ -release \ -shared \ -no-qt3support \ -platform linux-lsb-g++ \ -no-gif \ -no-libtiff \ -no-libmng \ -no-openssl \ -no-rpath \ -no-separate-debug-info \ -no-nis \ -no-pch \ -no-qdbus \ -no-stl \ -DQT_NO_INOTIFY \ -prefix /usr/local/qt4-lsb31 make -- [ signature omitted ]
On Thursday 29 November 2007 11:53:43 Jens wrote: > Somehow the lsb-guys managed to compile Qt4 with lsb-tools. And I found > an lsb-plattform in qt4/mkspecs/linux-lsb-g++. It seems as if qt4 tries > to become lsb 3.1 compliant. > > Thats why I tried to compile qt4.3.2 with the lsb-sdk. > > But it fails :( because of conflicting declarations between > /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in > corelib/io/qfilesystemwatcher_inotify.cpp > > Any idea what to do? That makespec is for building LSB applications against Qt. It's not meant to build Qt against the LSB libraries. That will not work. Qt uses a lot of symbols and definitions that are not part of the LSB and will probably not be any time soon. In fact, with LSB 3.1, the only way you can print is to use Qt, because CUPS libraries aren't part of it, but Qt has QPrinter that is allowed to talk to CUPS. It does that by linking to libcups, even if that is not part of LSB. How, you ask me? Because Qt isn't LSB-compliant. It's not intended to be. But applications linking to Qt can be LSB-compliant. -- [ signature omitted ]
Attachment:
signature.asc
Description: This is a digitally signed message part.
Hi Thiago, > How, you ask me? Because Qt isn't LSB-compliant. It's not intended to be. But > applications linking to Qt can be LSB-compliant. I would like to create a LSB-compliant application, which needs minimum Qt4.3.2. Therefore I decided to publish my app (beside source) as binary-tar.gz-package (same as paraview does). To have a clear definition on which distributions this binary runs without problems, I decided to use LSB and include all extra libraries in my binary-package. Beside Vtk, Qt4.3.2 are extra libraries I have to include. Therefore I need to compile Qt4.3.2 against the LSB-libs/includes. I have seen at http://labs.trolltech.com/blogs/2006/01/08/qt-lsb-integration/ and http://trolltech.com/company/newsroom/announcements/press.2006-05-01.5997770897 that Qt4.1.1 was build against the LSB-libs and is part of LSB as an optional package -- that is the reason why I hoped and asked how to compile the new Qt4.3.2 with LSB. I cannot believe LSB-support dropped after Qt4.3.2. Sorry for keeping this thread open :) Greetings Jens -- [ signature omitted ]
Hi, > > I would like to create a LSB-compliant application, which needs minimum > Qt4.3.2. Therefore I decided to publish my app (beside source) as > binary-tar.gz-package (same as paraview does). > Then you cannot use that version of LSB. LSB 3.1 only included Qt 4.1 as optional. LSB 3.2 will hopefully upgrade Qt to 4.2.3 and make it a mandatory part of the stack. > Beside Vtk, Qt4.3.2 are extra libraries I have to include. Therefore I > need to compile Qt4.3.2 against the LSB-libs/includes. > If you want to compile Qt using LSB only stuff, then you shouldn't have major problems. You need to tweak the configuration a little bit to make it work, but you will have to ship your own compiled version of Qt with your application to make it LSB compliant. > > that Qt4.1.1 was build against the LSB-libs and is part of LSB as an > optional package -- that is the reason why I hoped and asked how to > compile the new Qt4.3.2 with LSB. > I cannot believe LSB-support dropped after Qt4.3.2. > It wasn't dropped, but LSB publish their standards once a year and they do not update them. We are working to have a more recent version of Qt on the next LSB standards but that is not our decision, LSB people make the decision. Regards. -- [ signature omitted ]
Hi Carlos,
thanks for your answer. I am happy to get positiv news :)
> If you want to compile Qt using LSB only stuff, then you shouldn't have major
> problems. You need to tweak the configuration a little bit to make it work,
> but you will have to ship your own compiled version of Qt with your
> application to make it LSB compliant.
yes, that is exactly what I was thinking about.
Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I
started the script "config4LSB" (listed at the bottom ) in a clean
qt-x11-opensource-src-4.3.2 directory.
But it fails :( because of conflicting declarations between
/usr/include/linux/types.h and /opt/lsb/include/sys/types.h in
corelib/io/qfilesystemwatcher_inotify.cpp
The line in qfilesystemwatcher_inotify.cpp
#include "linux/types.h"
makes it fail. I changed that line to "sys/types.h", which would take
the lsb-includes, but it still fails.
I tried to skip qfilesystemwatcher_inotify.cpp with -DQT_NO_INOTIFY, but
qt tries to compile that file anyway.
Any idea? Anyone working on LSB-related issues at trolltech, who might
have made Qt4.3.2 compile with LSB?
Thanks a lot for your answers and your time.
Greetings
Jens
================== config4LSB ====================
#!/bin/sh
export PATH=/opt/lsb/bin:$PATH
export LD_LIBRARY_PATH=/opt/lsb/lib:$LD_LIBRARY_PATH
export LSBCC_SHAREDLIBS=\
libQt3Support:\
libQtAssistantClient:\
libQtCore:\
libQtDBus:\
libQtDesignerComponents:\
libQtDesigner:\
libQtGui:\
libQtNetwork:\
libQtOpenGL:\
libQtScript:\
libQtSql:\
libQtSvg:\
libQtTest:\
libQtUiTools:\
libQtXml
export SB_SHAREDLIBPATH=/usr/local/qt-x11-opensource-src-4.3.2_lsb31/lib
./configure \
-release \
-shared \
-no-qt3support \
-platform linux-lsb-g++ \
-no-gif \
-no-libtiff \
-no-libmng \
-no-openssl \
-no-rpath \
-no-separate-debug-info \
-no-nis \
-no-pch \
-no-qdbus \
-no-stl \
-DQT_NO_INOTIFY \
-prefix /usr/local/qt4-lsb31
--
[ signature omitted ]
Hi, > Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I > started the script "config4LSB" (listed at the bottom ) in a clean > qt-x11-opensource-src-4.3.2 directory. > > But it fails :( because of conflicting declarations between > /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in > corelib/io/qfilesystemwatcher_inotify.cpp > Well, in this case Qt can be compiled using your normal toolchain since you will ship your own version of Qt. _HOWEVER_ you need to make sure that all dependencies are fulfilled by either including other libraries or by disabling them in Qt (libpng for instance). After you have your version of Qt ready, compile your application using LSB developer tools and add Qt to the compile process as a component of your application. Once that's done you can ship your application and your own version of Qt as a bundle to be LSB certified. The LSB guys check that you only call LSB standard symbols when calling system libraries, therefore any Qt symbols your application requires must be provided with the Qt version you ship with your app. I'm not sure if I explained clearly, but give it a spin and scream if you run into troubles. Cheers! -- [ signature omitted ]
Hi, I finally managed to compile Qt4.3.2 with LSB3.1 SDK with the two scripts attached to this mail. I found one "bug" in Qt4.3.2/src/corelib/io/qfilesystemwatch_inotify.cpp "#include <linux/types.h>" needs to be changed to "#include <asm/types.h>" to make it compile with lsb-3.1.1. (shall I send this to qt-bug@trolltech, too?) That header is needed for definition of "__u32" which is defined in "asm/types.h" (included from "linux/types"). But if you include "linux/types.h", you include other definitions, too, which create conflicts with lsb-headers. Greetings Jens ======================== Here is the howto: 1) download LSB3.1-SDK from www.linux-foundation.org/en/Downloads 2) lsb-skd includes seperate rpms. I installed the following to /opt/lsb/ lsb-build-base-3.1.1-3.i486.rpm lsb-build-c++-3.1.1-3.i486.rpm lsb-build-cc-3.1.1-3.i486.rpm lsb-build-desktop-3.1.1-3.i486.rpm 3) then change to the source directory of qt and "mkdir lib" ((because will set LSB_SHAREDLIBPATH) 4) change "#include <linux/types.h>" in corelib/io/qfilesystemwatch_inotify.cpp to "#include <asm/types.h>" Infos: * the config flags are just the ones I used. If you change them, make sure to include the libs they need. * use "-no-sse -no-sse2" to skip mm_malloc-errors (no libmm-support in LSB 3.1) in gui/painting/ Carlos Manuel Duclos Vergara schrieb: > Hi, > >> Compiling Qt4.3.2 using LSB-only-stuff is what I tried. Therefore I >> started the script "config4LSB" (listed at the bottom ) in a clean >> qt-x11-opensource-src-4.3.2 directory. >> >> But it fails :( because of conflicting declarations between >> /usr/include/linux/types.h and /opt/lsb/include/sys/types.h in >> corelib/io/qfilesystemwatcher_inotify.cpp >> > > Well, in this case Qt can be compiled using your normal toolchain since you > will ship your own version of Qt. _HOWEVER_ you need to make sure that all > dependencies are fulfilled by either including other libraries or by > disabling them in Qt (libpng for instance). > After you have your version of Qt ready, compile your application using LSB > developer tools and add Qt to the compile process as a component of your > application. Once that's done you can ship your application and your own > version of Qt as a bundle to be LSB certified. > The LSB guys check that you only call LSB standard symbols when calling system > libraries, therefore any Qt symbols your application requires must be > provided with the Qt version you ship with your app. > I'm not sure if I explained clearly, but give it a spin and scream if you run > into troubles. > > Cheers! > >
Attachment:
Attachment:
config4LSB.sh Attachment:
make4LSB.sh
Description: application/shellscript
Description: application/shellscript