0

I have this problem only on CentOS 7.7 (on Fedora 33 and 35 it all works as expected). My appimage app for some reason tries to open system libQt5Core.so.5, libsystemd.so.0 , and some others, while loading most other libraries from the appimage as intended.

I ensured to have RPATH (i.e., not even RUNPATH: I achieved it by using patchelf --force-rpath --set-rpath) set up correctly for all the executable and libs. Below, I show the situation for my appimage after I extracted it with --appimage-extract option and applied patchelf to set RPATH:

[jenya@localhost bin]$ ldd myapp 
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by ./myapp)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15.2_PRIVATE_API' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
./myapp: /lib64/libQt5Core.so.5: version `Qt_5.15' not found (required by /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5)
    linux-vdso.so.1 =>  (0x00007ffcc2592000)
    libQt5Widgets.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Widgets.so.5 (0x00007f2048415000)
    libQt5Gui.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Gui.so.5 (0x00007f2047d9c000)
    libQt5Sql.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Sql.so.5 (0x00007f2048d47000)
    libQt5Network.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Network.so.5 (0x00007f2048b98000)
    libQt5Test.so.5 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Test.so.5 (0x00007f2047d41000)
--->libQt5Core.so.5 => /lib64/libQt5Core.so.5 (0x00007f2047894000)
    libstdc++.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libstdc++.so.6 (0x00007f2047663000)
    libm.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libm.so.6 (0x00007f204751a000)
    libgcc_s.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgcc_s.so.1 (0x00007f20474fe000)
    libc.so.6 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libc.so.6 (0x00007f204732c000)
    libpthread.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpthread.so.0 (0x00007f2047308000)
    libGL.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libGL.so.1 (0x00007f204726e000)
    libpng16.so.16 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpng16.so.16 (0x00007f2047233000)
    libz.so.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libz.so.1 (0x00007f2047218000)
    libharfbuzz.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libharfbuzz.so.0 (0x00007f2047146000)
    libdl.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libdl.so.2 (0x00007f204713e000)
    libgssapi_krb5.so.2 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgssapi_krb5.so.2 (0x00007f20470e5000)
    libssl.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libssl.so.1.1 (0x00007f2047042000)
    libcrypto.so.1.1 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libcrypto.so.1.1 (0x00007f2046d3e000)
    libsystemd.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libsystemd.so.0 (0x00007f2046c78000)
    libicui18n.so.50 => /lib64/libicui18n.so.50 (0x00007f2046879000)
    libicuuc.so.50 => /lib64/libicuuc.so.50 (0x00007f2046500000)
    libicudata.so.50 => /lib64/libicudata.so.50 (0x00007f2044f2c000)
    libpcre2-16.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libpcre2-16.so.0 (0x00007f2044ea1000)
    libgthread-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libgthread-2.0.so.0 (0x00007f2044e9b000)
    libglib-2.0.so.0 => /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libglib-2.0.so.0 (0x00007f2044d5e000)
    ../lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f2048b71000)

However, I have the libQt5Core.so.5, where it should be:

[jenya@localhost bin]$ ls /home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5 
/home/jenya/Downloads/squashfs-root/usr/bin/./../lib/libQt5Core.so.5

Besides, I have ensured to have RPATH indeed, rather than RUNPATH:

[jenya@localhost bin]$ readelf -d ./myapp  | grep PATH
 0x000000000000000f (RPATH)              Library rpath: [$ORIGIN/../lib]

[jenya@localhost bin]$ readelf -d ../lib/libQt5Widgets.so.5  | grep PATH
 0x000000000000000f (RPATH)              Library rpath: [$ORIGIN]

How can this be and how can this be fixed? Thank you for attention.

JenyaKh
  • 2,040
  • 17
  • 25

1 Answers1

0
[jenya@localhost bin]$ objdump -s -j .note.ABI-tag ../lib/libQt5Core.so.5 

../lib/libQt5Core.so.5:     file format elf64-x86-64

Contents of section .note.ABI-tag:
 03a4 04000000 10000000 01000000 474e5500  ............GNU.
 03b4 00000000 03000000 11000000 00000000  ................

If one looks closely one can see 03 ... 11. This says that it want kernel not younger than 3.17.

The solution by strip, proposed here https://bugs.archlinux.org/task/61130 and in some other places on the net did not help me.

So I installed hexedit and opened the lib with it. I made /-search of 1000000001000000474e5500, and replaced 11 (i.e. 17) by 01 (just some version less than 3.10, i.e. the version of Centos 7.7), and saved and exited (by Ctrl+x).

This did the trick.

JenyaKh
  • 2,040
  • 17
  • 25