Re: Delivering on multple Linux dists?
From: Dave Platt (dplatt_at_radagast.org)
Date: Wed, 27 Oct 2004 18:35:20 -0000
In article <Xyxfd.57561$CT6.firstname.lastname@example.org>,
Steve Johnson <email@example.com> wrote:
>If I want to support the most recent 2 versions of the top 6 Linux
>distributions, how many different binary packages will I need to make
Anywhere from 1 to 12, depending on the distributions and on how you
build your application.
>What are the variables that determine compatibility between my build and a
>particular Linux dist? Kernel version? libc/glibc version? Distribution?
Versions of any other shared libraries you use. Some shared libraries
have fairly good runtime compatibility between versions, others do not.
You'll probably get the best compatibility (least number of binary
versions required) if you link your application statically, with all
of the library code actually bound into the executable. This makes
you largely (but not entirely) independent of the library
configuration on the target systems (there may be library-related
config files which are not version-independent).
However, there are three major disadvantages:
- The executable file may be much larger, making distribution via the
Net less efficient.
- The executable file's memory image may be much larger, due to the
lack of library sharing, thus increasing the effective RAM
requirement for the target system.
- The distribution-and-linking rules for the libraries you use may be
different... e.g. additional GPL or LGPL requirements may apply.
>To build for any particular target, do I necessarily have to build ON that
>target, or is there some way to build for multiple targets from a single
You can often cross-build, but it will probably require maintaining
multiple sets of development libraries on your build system. It's
possible but not always easy.
Another option is to compile your app against a specific set of
library include files, pre-link the object files into a single
linkable object (removing any unnecessary debug symbols, internal
symbol refs you don't care to disclose, etc.) and then distribute the
application as a link-and-install kit. This will allow the app to be
linked against the actual set of libraries present on the target
system, helping to ensure compatibility... but it'd require that each
target system actually include the development library kits for all of
those libraries, and these may not normally be present.
>If somebody out there has done this sort of thing, building commercial
>binary distributions for multiple Linux dists, and could give me some
>pointers, I'd greatly appreciate it. If this information exists on the net
>somewhere, a pointer to it would be super.
Talk to the OpenOffice.org folks, or the AbiSource folks, or the
Mozilla folks... they've had to deal with these issues.
-- Dave Platt <firstname.lastname@example.org> AE6EO Hosting the Jade Warrior home page: http://www.radagast.org/jade-warrior I do _not_ wish to receive unsolicited commercial email, and I will boycott any company which has the gall to send me such ads!