[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

Re: [XaraXtreme-dev] Doesn't start on Suse





--On 13 April 2006 22:08 +0100 Charles Moir <CharlesM@xxxxxxxx> wrote:

Running form the command line ((c) Any OS that requires user to type
cryptic commands into a cryptic command line in order to see error
messages is pre-historic and will NEVER gain mass-market acceptance) I
can see 'error while loading shared library: undefined symbol
Pango_context-get-font-map'

So I least I know it's yet another shared library problem.

Whilst this one is probably possible to catch as it's late loaded (pango is
the font rendering stuff), most shared library problems are not late-loaded
and you would not have this option. This is exactly the same as windows. If
you just copy a binary onto a windows platform, and expect it to work, it
won't. On Windows you have only one solution: an installer. On linux you
have three solutions: compile from source (in which case if you install the
-dev libraries, you've necessarily installed the libraries themselves) -
this is the gentoo/emerge solution; supply a package - this is the
distributions' solution; or supply a universal installer (of which there
seem to be an ever growing number) - this is the ISV solution. As I keep
saying, we should produce either one or both of these, and these problems
will go away. Hoping to produce a binary that will just load and run, when
it needs shared libraries, is I think cloud cuckoo land. I appreciate that
there is the odd windows binary that does this (putty being a well known
case in point), and equally there is the odd linux binary that does this
(the mail client I'm using, Mulberry, being a case in point), it's at the
expense of large binaries and not being able to use libaries that
themselves dynamically load stuff. wxWidgets itself, even when static
linked, late-binds dynamic libraries (i.e. even when you static link it, it
will dl-open to pango etc, rather than them being linked in as static).
There are good reasons for this, and wxWidgets is far from the only
"offender".

It is entirely possible to write user friendly linux apps. However, it is
not possible (as far as I know) to do so with (i) non-trivial library use
and (ii) at the same time as refusing to produce either an installer or
appropriate packages.

Before you ask the question, yes it is (probably) possible to produce
an almost entirely static linked version of XaraLX, i.e. with all the pango
stuff built in by default. Getting to an entirely static linked version
will be close to impossible (see the libc5++ bug report I think you
yourself submitted). That's not much different from requiring a modern
version of MSVCRT.DLL. However, whether or not it is technical possible
is a different question from whether or not it is desirable, or sensible.

The SUSE case in point is simple. If the rpm specified the relevant pango
dependency, yum would have insisted upon the appropriately versioned pango
library, and it would all have worked.

Note that on windows you wouldn't even get the option to type a
cryptic command line incantation. You'd just double click on the
icon and nothing would happen, so complaining about the fact that
you can debug the problem is a little off-base. In my book, neither
requiring shared library problems are sorted out at install time, nor
allowing debugging of the problem when they aren't, counts as
'prehistoric'.

Alex