FLTK logo

Re: [fltk.coredev] Fedora 39 Native File Chooser issues when compiled on RH8.9.1

FLTK matrix user chat room
(using Element browser app)   FLTK gitter user chat room   GitHub FLTK Project   FLTK News RSS Feed  
  FLTK Apps      FLTK Library      Forums      Links     Login 
 All Forums  |  Back to fltk.coredev  ]
 
Previous Message ]New Message | Reply ]Next Message ]

Re: Fedora 39 Native File Chooser issues when compiled on RH8.9.1 "'Albrecht Schlosser' via fltk.coredev" 12:15 Apr 09  
  On 4/9/24 20:49 'Albrecht Schlosser' via fltk.coredev wrote:
FLTK loads the GTK filechooser dynamically if it is found on the system
and if it is not disabled by the user or system option
Fl::option(OPTION_PRINTER_USES_GTK). That's why it doesn't show up in
linked dependencies. Look for 'libgtk' in the FLTK sources, e.g. `git
grep libgtk`. Looks like the library is either "libgtk-3" or
"libgtk-x11-2.0" but this may not help you.

While I wrote about "symbol prefixing" in another post I remembered that the dynamic loading of libgtk was one of the reasons why we introduced "symbol prefixing" in our bundled image libs. It turned out that libgtk depends on a lot of stuff, but particularly on libjpeg and libpng and indirectly on zlib. W/o going into details: this caused crashes when different ABI's were present because symbols (function entry points) were incorrectly resolved. Since the GTK filechooser can show previews of images and some icons...

TL;DR: if there's a chance that your user has any library both FLTK (your image) *and* libgtk depend on and if there may be different versions on your build system and the user's system, then ... see above: ABI mismatch can cause unforeseeable effects.

FYI, on my system we have this very long list of dependencies:
$ lddtree /usr/lib/x86_64-linux-gnu/libgtk-3.so
/usr/lib/x86_64-linux-gnu/libgtk-3.so (interpreter => None)
    libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0
        libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0
        libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0
            libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8
            libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0
        libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0
        libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1
        libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6
        libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1
            libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1
        libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1
        libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1
        libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2
        libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1
    libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0
    libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0
        libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0
    libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0
    libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1
        libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1
            libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1
            ld-linux-x86-64.so.2 => /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
        libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1
    libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0
    libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0
        libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0
            libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1
    libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0
        libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6
            libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16
            libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1
                libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1
        libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3
    libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2
        libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0
        libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0
        libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1
            libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6
            libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6
                libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0
                    libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0
        libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0
    libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0
    libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1
        libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1
    libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0
    libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2
    libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0
        libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62
    libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0
    libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6
    libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6
    libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6
    libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0
        libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3
            libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0
                libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2
                libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20
                    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0
                liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5
                libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1
                liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1
    libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6

Good luck!

--
You received this message because you are subscribed to the Google Groups "fltk.coredev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to fltkcoredev+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/fltkcoredev/c5a9e584-dbb6-4d93-8459-5ca8b831d526%40aljus.de.
Direct Link to Message ]
 
     
Previous Message ]New Message | Reply ]Next Message ]
 
 

Comments are owned by the poster. All other content is copyright 1998-2024 by Bill Spitzak and others. This project is hosted by The FLTK Team. Please report site problems to 'erco@seriss.com'.