Re: Delivering on multple Linux dists?

From: Dave Platt (dplatt_at_radagast.org)
Date: 10/27/04


Date: Wed, 27 Oct 2004 18:35:20 -0000

In article <Xyxfd.57561$CT6.49599@sam.nntpserver.com>,
Steve Johnson <steve@parisgroup.net> 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
>available?

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?
>What else?

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
>build machine?

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 <dplatt@radagast.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!


Relevant Pages

  • Re: Function minimization and random numbers
    ... There are a few all-encompassing numerical libraries out ... But it's my recollection that you can generate Gaussian and other non-linear distributions by appropriate iteration of linear distributions. ... Wikipedia has a pseudo-code implementation of Mersenne twister. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Lost my folders after installing POP3 server!
    ... :)> It looks like the source code of Pine has been modified. ... :) This is an example of why we decided NOT to build with shared libraries ... I am aware of third party distributions which modify the source ...
    (comp.mail.pine)
  • Re: preparing for the next open-source gfortran release
    ... there are libraries to be included in the directory it points to, ... As it is common to all GCC-based distributions, ... For the benefit of our users, it is best that not GCC implementation set ... "Er hat sich georgiert." ...
    (comp.lang.fortran)
  • Re: CL-UNIFICATION as a library (Re: Qi Seems Great)
    ... libraries for GUI, graphics, etc. ... Distributions are not C++. ... available CL distributions and CL IDEs and comparing them to C++ ... Assuming there's no library in the LispBox to parse XML data, ...
    (comp.lang.lisp)
  • Re: Looking for a cryptographers advise
    ... > That's hard to answer without knowing the target system, ... > you're writing in, the libraries your using, etc. ... code deteriorates in performance when moved from a Pentium 3 ...
    (sci.crypt)