|
From: Mats B. <ma...@pr...> - 2007-07-22 06:53:52
|
Joe English wrote:
> Mats Bengtsson wrote:
>
>> I've built tileqt on my own linux machine and there it works OK but one of my
>> testers
>> have problems. System:
>> [info patchlevel] = 8.4.14
>> tile 0.7.3
>> I think I've built tileqt with the same version of tile but I'm not sure.
>>
>> Trying to debug it results in the following:
>>
>> couldn't load file "bin/unix/Linux/i686/tileqt /libtileqt0.4.so":
>> libpng.so.3: cannot open shared object file: No such file or directory
>
> Probable cause: the build machine has a different version
> of libpng than the target machine. Whether it's newer or
> older is hard to say -- libpng releases have historically
> been pretty good about preserving source compatibility,
> but not so great at preserving binary compatibility.
> To make matters more complicated it hasn't followed a
> consistent convention for SONAMEs either, and different
> distros have used different strategies to mitigate this.
>
> Some Linux distros make older libpng versions available
> in compatibility packages -- you could try '{yum|apt-get|whatever}
> install libpng.so.3" or the equivalent on the target machine.
> Personally, I would not expect that to work -- it might get
> past that error, but there are almost certainly more compatibility
> issues waiting after that one (more below).
>
>> Adding this library all hell breaks loose resulting in very strange errors
>
> How did you add the library?
It wasn't me. It was one of my testers. I CC him.
>
>> I've seen before when I created Tcl_Obj corruption when creating Tcl_Obj
>> on arbitrary threads:
>> couldn't load file "bin/unix/Linux/i686/tileqt /libtileqt0.4.so":
>> bin/unix/Linux/i686/tileqt /libtileqt0.4.so: undefined symbol:
>> Ttk_StateTableLookup
>>
>> error reading package index file /usr/lib/vfs1.3/pkgIndex.tcl: syntax
>> error in expression "[package provide Tcl] < 8.4": extra tokens at end
>> of expression
>> ...
>>
>> and there is no end to it.
>> I wonder how tileqt is built. Not sure what the relations are between tileqt
>> and tile.
>> In other words, what to do to avoid problems like this?
>
>
> In this particular case: I notice that tileqt doesn't directly
> call anything from libpng, so there's no need to include "-lpng"
> on the link line. (Qt uses libpng, but since ELF systems support
> transitive dependencies you don't need to specify it when linking
> libtileqt.so.) Try removing -l flags from the link line until
> you get a minimal set of dependencies.
>
> Of course there are still two big issues: libqt and libstdc++.
> Expect to see cross-distro compatibility issues with those two, too.
>
I've read about a lot of problems with libstdc++ and tclkit so it is perhaps expected.
But it shouldn't load the package if there are compatibility problems.
And I've heard that Qt should be compatible with major version numbers.
> Your best bet is to compile and link libtileqt.so on the same
> platform as the target host.
>
This isn't an option if you're trying to distribute an application.
Georgios:
> A good start is to provide some more info about the linux distros where tileqt got compile & the systems where it runs with problems.
> In general I don't have any problems with fedora & suse I use :-(
Build system: SUSE 10.0
locate libqt
/opt/gnome/lib/gtk-2.0/2.4.0/engines/libqtengine.so
/opt/kde3/lib/kde3/plugins/integration/libqtkde.la
/opt/kde3/lib/kde3/plugins/integration/libqtkde.so
/opt/kde3/lib/libqtjava.la
/opt/kde3/lib/libqtjava.so
/opt/kde3/lib/libqtjava.so.1
/opt/kde3/lib/libqtjava.so.1.0.0
/opt/kde3/lib/libqtjavasupport.la
/opt/kde3/lib/libqtjavasupport.so
/opt/kde3/lib/libqtjavasupport.so.1
/opt/kde3/lib/libqtjavasupport.so.1.0.0
/opt/kde3/lib/libqtmcop.la
/opt/kde3/lib/libqtmcop.so
/opt/kde3/lib/libqtmcop.so.1
/opt/kde3/lib/libqtmcop.so.1.0.0
/opt/kde3/lib/libqtopiakonnector.la
/opt/kde3/lib/libqtopiakonnector.so
/usr/lib/libqt-mt.so.3
/usr/lib/libqthreads.a
/usr/lib/libqthreads.la
/usr/lib/libqthreads.so
/usr/lib/libqthreads.so.12
/usr/lib/libqthreads.so.12.3.0
/usr/lib/MainConcept/MainActor/libqt-mt.so
/usr/lib/MainConcept/MainActor/libqt-mt.so.3
/usr/lib/MainConcept/MainActor/libqt-mt.so.3.3
/usr/lib/MainConcept/MainActor/libqt-mt.so.3.3.4
/usr/lib/qt3/lib/libqt-mt.la
/usr/lib/qt3/lib/libqt-mt.prl
/usr/lib/qt3/lib/libqt-mt.so
/usr/lib/qt3/lib/libqt-mt.so.3
/usr/lib/qt3/lib/libqt-mt.so.3.3
/usr/lib/qt3/lib/libqt-mt.so.3.3.4
/usr/lib/xmms/Input/libqt_xmms.so
locate libpng
/usr/bin/libpng-config
/usr/bin/libpng12-config
/usr/include/libpng
/usr/include/libpng12
/usr/include/libpng12/png.h
/usr/include/libpng12/pngconf.h
/usr/lib/libpng.a
/usr/lib/libpng.so
/usr/lib/libpng.so.3
/usr/lib/libpng.so.3.1.2.8
/usr/lib/libpng12.a
/usr/lib/libpng12.so
/usr/lib/libpng12.so.0
/usr/lib/libpng12.so.0.1.2.8
/usr/lib/pkgconfig/libpng.pc
/usr/lib/pkgconfig/libpng12.pc
/usr/local/ActiveTcl/lib/Img1.3/libpngtcl1.2.6.so
/usr/share/doc/packages/libpng
/usr/share/doc/packages/libpng/ANNOUNCE
/usr/share/doc/packages/libpng/CHANGES
/usr/share/doc/packages/libpng/KNOWNBUG
/usr/share/doc/packages/libpng/libpng.txt
/usr/share/doc/packages/libpng/LICENSE
/usr/share/doc/packages/libpng/README
/usr/share/doc/packages/libpng/TODO
/usr/share/doc/packages/libpng/Y2KINFO
/usr/share/man/man3/libpng.3.gz
/usr/share/man/man3/libpngpf.3.gz
/usr/share/pkgconfig/libpng.pc
/usr/share/pkgconfig/libpng12.pc
/windows/C/Documents and Settings/Administrat??r.HEMMA-89PWX7A7Q/Lokala inst?§llningar/Temp/Doc/DirectXEULAs/libpng-license.txt
/windows/C/Program/Delade filer/GTK/2.0/bin/libpng12.dll
/windows/C/Program/WinGIMP/lib/libpng-3.dll
Run system: Sander (CC) has to answer.
> A good start will be to make something like "ldd -d" on the tileqt binary, and see the various dependent libraries.
> Tileqt has only dependencies in the tile & qt libraries (and of course c++ libraries due to qt).
linux:~/Coccinella/Src/coccinella/bin/unix/Linux/i686/tileqt # ldd -d libtileqt0.4.so
linux-gate.so.1 => (0xffffe000)
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x4003a000)
libqt-mt.so.3 => /usr/lib/libqt-mt.so.3 (0x40134000)
libz.so.1 => /lib/libz.so.1 (0x4081f000)
libpng.so.3 => /usr/lib/libpng.so.3 (0x40832000)
libm.so.6 => /lib/tls/libm.so.6 (0x40871000)
libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x40897000)
libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x408a5000)
libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x408af000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x408c7000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x408d9000)
libc.so.6 => /lib/tls/libc.so.6 (0x408e4000)
libdl.so.2 => /lib/libdl.so.2 (0x40a03000)
libXi.so.6 => /usr/X11R6/lib/libXi.so.6 (0x40a07000)
libXrender.so.1 => /usr/X11R6/lib/libXrender.so.1 (0x40a10000)
libXrandr.so.2 => /usr/X11R6/lib/libXrandr.so.2 (0x40a18000)
libXcursor.so.1 => /usr/X11R6/lib/libXcursor.so.1 (0x40a1c000)
libXinerama.so.1 => /usr/X11R6/lib/libXinerama.so.1 (0x40a25000)
libXft.so.2 => /usr/X11R6/lib/libXft.so.2 (0x40a28000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x40a3b000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x40aaa000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x40ada000)
/lib/ld-linux.so.2 (0x80000000)
libexpat.so.0 => /usr/lib/libexpat.so.0 (0x40bb6000)
Mats
|