How can you ship with new libraries?



I'm sorry if this seems like a poorly targeted or researched question, but I can't find any information on this and I'm not sure where to look.

I want to ship an application with recent versions of pango and cairo, but it's important to me not to be dependent on platforms that include those libraries.  On Linux, for instance, I want to support distributions at least as old as Centos 4.7.  On Windows, this has been somewhat straightforward; once built, throwing all the DLLs together and loading them at runtime just works.

On Linux, however, I am about to rip my hair out from the dependency problems; the crux seems to be that my version of cairo requires a slightly newer fontconfig than my oldest supported platform has, so I'm stuck building all kinds of dependencies, including glib, freetype, fontconfig, libthai, and more.  If I try to naively build them all statically, that is, using --disable-shared --enable-static on the configure command line, and ensure that pkg-config can't find the .pc files for the system's versions, things seem to break down by the time I get to building pango and it's trying to generate the modules list, whereupon it produces a pango-list-modules binary that is interestingly broken; I think the problem was including a static, freshly built glib, and also somehow pulling in the system's libpango which pulled in the system's glib; glib unsurprisingly died a horrible and gruesome death.

(This whole mess is somewhat complicated by wanting cairo & pango to be shared libs, but nothing else; perhaps that is the cause of my problem?)

Anyway, I think what I really want to know is, how on earth do people ship binary applications on Linux with specific versions of pango and cairo, i.e. without depending on the distribution?  What's the best practice here?

Damian



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