Compile For C6 / Glibc

Home » CentOS » Compile For C6 / Glibc
CentOS 10 Comments

In the hope that some skilled developers are here:

We have a commercial product that do not run under CentOS6

/lib64/libc.so.6: version `GLIBC_2.14′ not found

Is it possible to compile software (compile switch?) on a system that uses a newer glibc but in such a way that can be used (executed) on a system with an older glibc (like here: compiled on glibc 2.14
based system but C6 is on 2.12)?

10 thoughts on - Compile For C6 / Glibc

  • it sounds to me that you’re on a path to madness. if you have a commercial product, you should have support for that product and follow their guidance on what the underlying OS is/should be/can be modified to make your system run. trying to cobble together support for a closed source application from twisting and bending open source things into shapes they weren’t meant to hold is just going to set you up for a spectacular failure when the wrong OS things get updated, a vendor patch comes out, or some other very difficult to trace problem arrives.

  • How about virtualization and running on supported platform?

    Eero
    25.8.2015 4.03 ip. “Leon Fauster” kirjoitti:

  • Am 25.08.2015 um 16:31 schrieb Eero Volotinen :

    The support of this vendor (2) is willing to provide such OS support for there products.

    The same was also offered by a different vendor (1), they just recompiled there software and gave us the opportunity to test it under C6. Before that it only was running under Ubuntu. I just was curious about such solution to give the second vendor a hint (the symptoms are the same).

  • So the easiest solution would be that the vendor (2) build the software on a C6 system. Most likely it will compile fine, and the produced binary will run on C6 as well as more recent distributions.

  • Am 25.08.2015 um 19:17 schrieb Nicolas Thierry-Mieg :

    sure, thats always possible but exist there some backward compatibility switch when compiling against a newer glibc?

  • No, not really. When you compile a program it LINKS against the standard c or c++ library. You have to run it on a c library that has all the features / functions .. that is WHY it puts the version in.

    If you want it to work on CentOS, it needs to be compiled on CentOS .. pretty simple.

    There does EXIST a compat-glibc (or compat-gcc) to run OLDER stuff (ie things for CentOS-6) on a newer distro (ie CentOS-7). But those side load an older version of the libraries for use on the new system.

    Technically, if they used the older version of glibc/gcc (and any other required library links) on ubuntu, you can make things work, but it would be easier to compile the software on the platform where it is intended to work.

  • binary compatibility has /never/ been a goal of the linux/gpl architects/authors. in fact, it seems like they make design decisions to discourage it.

    Red Hat, OTOH, goes to great lengths to try and implement it within a major release, but they are fighting upstream to do so.

  • I don’t think that’s true. Development in GNU/Linux is highly de-centralized, and some projects are better at stability than others.
    Linux has maintained an extremely stable interface for user-space applications. glibc uses versioned symbols for backward compatibility.
    The original question was about forward-compatibility, which is a much harder problem.

    Not all developers do as good a job with backward compatibility, but that problem is considerably more pronounced in the high level languages, where versioned libraries just aren’t a thing. And that’s why you see docker and other containers gaining traction, so that applications can be run in an environment with specific library versions.