Create an AppImage with latest libs, which works everywhere

Hello community!

While I understand, that it is recommend to create AppImages on the oldest still supported platform, but I need the opposite…

I want to run an App, compiled on ArchLinux, which needs to be run still on Ubuntu 16.04 if needed. I don’t care about the size.

I searched the web and docs, but did not find anything about that. Did I overlook something? Just a hint in the correct direction would be nice :wink:

  1. All libs listed with ldd must be included. :white_check_mark:
  2. Is there anything else needed to do?

For example, I got symbolic errors with glibc while running mkdir… is there anything I can do about it?

Thanks for your effort!

AppImages are great for portability and would like to see that this method get spread more.

I want to run an App, compiled on ArchLinux, which needs to be run still on Ubuntu 16.04 if needed. I don’t care about the size.

I used to do that for some of the games on https://portablelinuxgames.org. I built them on Archlinux in the Ubuntu 16.04 era, and they worked on Ubuntu 12.04 and 14.04.

  1. All libs listed with ldd must be included. :white_check_mark:
  2. Is there anything else needed to do?

You need to include the ELF interpreter itself: /lib/ld-linux.so.2 on 32bit or /lib64/ld-linux-x86-64.so.2 on 64bit.
Then you need a custom AppRun script that uses your included ELF interpreter to run your application’s binary: ./ld-linux-x86-64.so.2 <target_application> <whatever_parameters>.

Bear in mind it’s a tricky endeavour; it may work well on some applications, but some libraries don’t like this trick. That’s why it’s not usually the recommended way to package things.

Thank you for your reply :slight_smile:

That looks really promising. Thanks for the direction.

In which case could it be tricky? Do you have an example?

There are several tools which can do this:

I agree with @RazZziel that it is more a “last resort”.

I want to run an App, compiled on ArchLinux, which needs to be run still on Ubuntu 16.04 if needed.

Why? If it is your app, you could make the code changes needed for it to compile on the oldest still-supported Linux distribution, use that as the ingredients for the AppImage, and it would run on newer distributions as well. The core issue is that people don’t understand that they should always develop for the oldest systems users might have, not for the newest. The same thing drives me crazy on other platforms as well…