creating BscanFFTwebcam.AppImage using a manual process of creating an AppDir.
The AppImage was created on Linux Mint 18.1, running glibc 2.23
As listed in the docs, I removed the glibc associated libraries from the dependencies. If required, I can list out all the 150 or so libs which were included, as was listed by ldd
I tested the AppImage by booting a laptop into various distros using a live bootable usb.
The created AppImage runs OK on Ubuntu 16.04, and also runs OK on Fedora 24. But it does not run on Fedora 27 or 29, OpenSuse 42.2 or OpenSuse Leap 15.0. These have glibc versions newer than the 2.23 on my Mint machine which was used to create the AppImage. Error messages were quite similar to the ones below:
OpenSuse 13.2 error is
BscanFFTwebcam.bin: relocation error:
/tmp/.mount_BscanFl6zEAz/usr/lib/libpthread.so.0: symbol __libc_vfork,
version GLIBC_PRIVATE not defined in file libc.so.6 with link time
reference
Fedora 27 error is
BscanFFTwebcam.bin: relocation error:
/tmp/.mount_BscanFOK8VdL/usr/lib/libpthread.so.0: symbol
__libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file
libc.so.6 with link time reference
and so on.
Is there something I can do to make the AppImage work with newer distros?
I noticed that I had not removed all the libs from
from my AppDir/usr/lib
I now did a diff of ls of my lib directory and the excludelist, and removed more libs, like
libusb-1.0.so.0
libz.so.1
etc.
So, now all the libs in the excludelist are excluded. But still, the AppImage does not run on OpenSuse Leap 15.0 (did not test the other distros, since this one gave a similar error) -
./Bscan*mage
BscanFFTwebcam.bin: relocation error:
/tmp/.mount_BscanF6j1Sp3/usr/lib/libpthread.so.0: symbol
__libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file
libc.so.6 with link time reference
There are similar errors reported by other users, like
There, probonopd recommended using Ubuntu 14.04 with Qt5.8+
Is that advice valid for all AppImage builds? Or is that only for apps using Qt?
My app uses opencv, and I have bundled the opencv 3.3 libs.
After deleting, I again created an AppImage, and the error message from OpenSuse Leap 15.0 was as I mentioned in my previous message,
relocation error:
/tmp/.mount_BscanF6j1Sp3/usr/lib/libpthread.so.0: symbol
__libc_dl_error_tsd, version GLIBC_PRIVATE not defined in file
libc.so.6 with link time reference
Thanks probono. Will try to do this on a live cd of Ubuntu 14.04. It may take a few days, because I have to learn how to build using Travis CI or GitLab CI.
Thanks to probono’s tip, I have now successfully created an AppImage using trusty on Travis CI, using linuxdeployqt instead of manually creating the AppDir, and the resulting AppImage is working fine. Thank you, probono. The travis yml file used for this is available at