You don't have to switch to the unstable to get glib >= 2.14. In fact, the testing branch (now stable, or Jessie) has glib-2.17 which you can pick just adding the testing repository and launching:

sudo apt-get install libc6-dev=2.17-7

or,

sudo apt-get -t testing install libc6-dev

You can add the switch --dry-run to see what will being installed before hand. You can see the status of the glibc package in the Debian Package Tracker System (Debian renamed eglibc package to simply glibc from Jessie onwards).

You can also just wait for Jessie release on April 25.

Answer from Braiam on Stack Exchange
🌐
Ask Ubuntu
askubuntu.com › questions › 440529 › how-to-install-glibc-2-12-or-2-14-on-ubuntu-12-04
java - How to install glibc 2.12 or 2.14 on Ubuntu 12.04? - Ask Ubuntu
I am making a JNI call to a C++ library and it is compiled in glibc v2.12 or v2.14, but Ubuntu 12.04 has glibc 2.15. Whenever I make a call to the C++ library I get the error glibc 2.14 not found...
Top answer
1 of 2
6

You can use following commands to bring in newer version of glibc in ubuntu 20.04, but note that as it is a system package, upgrading it may impact your system.

apt-get install gawk bison gcc make wget tar -y
wget -c https://ftp.gnu.org/gnu/glibc/glibc-2.35.tar.gz
tar -zxvf glibc-2.35.tar.gz && cd glibc-2.35
mkdir glibc-build && cd glibc-build
../configure --prefix=/opt/glibc
make
make install
2 of 2
0

Introducing glibc will break your core binaries. Updated core binaries require a newer kernel which breaks hardware drivers (like NVIDIA) that need your old kernel. This "vicious cycle" makes it impossible to use new glibc w/o breaking your system.

The only solution is to compile the unsupported drivers somehow for the new kernel. So far this is not possible.

If you try using GLIBC without updating its dependencies, you will get complaints of a version mismatch on its dependencies which go all the way down to the kernel, which is why it is not possible.

Your options are limited and it is not possible unless you use a virtual machine. But likely VM is not what you want because VMs do not have the advantage of talking to your hardware directly. They have some VM extensions for making that better but they only cover CPU and RAM, not the video/sound card, that is all emulated.

Summary

If you want to run something that needs newer hardware, there is just no way around that:

  1. You cant use unsupported hardware on newer kernel, and therefore linker, and then GLIBC.

  2. You can't use unsupported GLIBC on older kernel which relies on the new kernel features. If you try to do it by force (point to new compiled version of the new binaries) you will get an error that the linker/kernel versions are incorrect.

  3. The only solution to this is if there was a way to update your hardware drivers. If that isn't your problem, then UPGRADE UBUNTU to the latest version. If that IS your problem, then you are out of luck.

  4. Companies like NVIDIA and AMD drop video support after a few years and leave you up a creek with no paddle, stranded on an old OS unless you buy yet another video card (even if your current one is fast and does just fine, they do NOT care).

  5. Sandboxing in flatpak still needs those libraries to be able to link with your kernel. Sandboxing only fixes dependencies that are above the base system level. HOWEVER, if any of those libraries were built against a binaries that recursively rely on newer core libraries, you will still be stuck and it will still not work, below is an example:

/lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found
(required by /tmp/.mount_my2newapp.a9fz3/usr/bin/../../usr/lib/liblzma.so.5)

As you can see here, even though the appimage/flatpak/snap was sandboxed, it still needed these new libraries further down the dependency chain.

🌐
Super User
superuser.com › questions › 1143222 › how-to-install-libc6-2-14-exactly
linux - How to install libc6 2.14 exactly? - Super User
November 7, 2016 - ImportError: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.14' not found (required by /home/vmagent/app/lib/tensorflow/python/_pywrap_tensorflow.so) ... konstantin@gae-default-1-yqpu:/home/vmagent$ sudo apt-get install libc6=2.14 Reading ...
🌐
Linuxier
linuxier.com › how-to-install-glibc-on-ubuntu
How to Install GLIBC on Ubuntu [22 Simple Steps] - Linuxier
May 12, 2024 - Configure your build environment with ../configure --disable-sanity-checks, compile it using make, and install by switching to the root user with sudo -s and executing make install.
🌐
DigitalOcean
digitalocean.com › community › questions › how-install-glibc-2-29-or-higher-in-ubuntu-18-04
How install GLIBC 2.29 or higher in Ubuntu 18.04 | DigitalOcean
June 6, 2020 - The first option is to migrate your application to a system that supports GLIBC higher than or equal to 2.29. This would mean a lot of work though. It seems Ubuntu 19.04 actually uses that version.
Top answer
1 of 2
29

If you need glibc version other than the one shipped with ubuntu, one way is to install manually to a temp location in your $HOME. (installing in /usr would mess up with existing glibc in case something goes wrong)

mkdir $HOME/glibc/ && cd $HOME/glibc
wget http://ftp.gnu.org/gnu/libc/glibc-2.32.tar.gz
tar -xvzf glibc-2.32.tar.gz
mkdir build 
mkdir glibc-2.32-install
cd build
~/glibc/glibc-2.32/configure --prefix=$HOME/glibc/glibc-2.32-install
make
make install

Now you should have glibc 2.32 installed in the installation directory. You may check with ~/glibc/glibc-2.32-install/bin/ldd --version

2 of 2
1

Building on Shalini's answer,

#!/bin/bash

SOFTWARE_NAME=$1
SOFTWARE_VERSION=$2

export DOWNLOAD_INSTALL_DIR=$SOFTWARE_NAME-$SOFTWARE_VERSION-download-install
if [ -f $DOWNLOAD_INSTALL_DIR ];
then
    rm -fr $DOWNLOAD_INSTALL_DIR
    echo "Remove $DOWNLOAD_INSTALL_DIR"
fi

mkdir $HOME/$DOWNLOAD_INSTALL_DIR/ && cd $HOME/$DOWNLOAD_INSTALL_DIR

echo "Current directory at $PWD"

export DOWNLOADED_TAR=$HOME/$DOWNLOAD_INSTALL_DIR/$SOFTWARE_NAME-$SOFTWARE_VERSION.tar.gz
if [ ! -f $DOWNLOADED_TAR ]; then
    wget https://ftp.gnu.org/gnu/$SOFTWARE_NAME/$SOFTWARE_NAME-$SOFTWARE_VERSION.tar.gz -P $HOME/$DOWNLOAD_INSTALL_DIR
    echo "Software is downloaded: $SOFTWARE_NAME, version = $SOFTWARE_VERSION "
else
    echo "Software is ALREADY downloaded: $SOFTWARE_NAME, version = $SOFTWARE_VERSION at $DOWNLOADED_TAR"
fi
tar -xvzf $DOWNLOADED_TAR -C $HOME/$DOWNLOAD_INSTALL_DIR
mkdir $HOME/$DOWNLOAD_INSTALL_DIR/build
export SOURCE_DIR=$HOME/$DOWNLOAD_INSTALL_DIR/$SOFTWARE_NAME-$SOFTWARE_VERSION-install
mkdir $SOURCE_DIR
cd $HOME/$DOWNLOAD_INSTALL_DIR/build
~/$DOWNLOAD_INSTALL_DIR/$SOFTWARE_NAME-$SOFTWARE_VERSION/configure --prefix=$SOURCE_DIR
make
make install

export SOFTWARE_PATH=$HOME/$DOWNLOAD_INSTALL_DIR/$SOFTWARE_NAME-$SOFTWARE_VERSION-install/bin/$SOFTWARE_NAME
if [ -f $SOFTWARE_PATH ]; then
    echo "Software is found: $SOFTWARE_NAME, version = $SOFTWARE_VERSION at $SOFTWARE_PATH"
    mv $SOFTWARE_PATH $GRAND_ROOT_BIN
fi

You can use the script like so bash script-name.sh bison 3.8 for downloading GNU's bison with version number 3.8.

Top answer
1 of 1
2

I am trying to run a really old application that was compiled on the 2.6.24 kernel.

The kernel version is irrelevant.

Your application was compiled on a system using GLIBC-2.14 (or newer), so it's not that old (GLIBC-2.14 was released on 2011-06-01).

./deskewDeslant: /lib/libc.so.6: version 'GLIBC_2.14' not found (required by ./deskewDeslant)

The error above means that your current GLIBC is too old.

./deskewDeslant: /usr/lib/libstdc++.so.6: version 'GLIBCXX_3.4.15' not found (required by ./deskewDeslant)

The error above means that your libstdc++.so is also too old.

I am currently using libc version 2.7. How do I downgrade the version to 2.14 ?

You believe that version 2.7 is newer than version 2.14, but the inverse is true. You need to upgrade your GLIBC from 2.7 to 2.14 (or newer).

In general, a given OS distribution will never upgrade GLIBC from the one it originally shipped with (the risk of breaking older applications is deemed too high). This is why your apt-get install libc6 does nothing.

Therefore, your choices are:

  1. upgrade the entire distribution, or
  2. obtain a binary compiled for your (old) distro, or
  3. install a newer version of GLIBC, or
  4. install a newer version of GLIBC in non-default location.

Option #2 is the simplest.

Option #1 may be the best (you would get security fixes, and other applications you download will work out of the box).

Option #3 is very risky: in addition to potentially breaking existing applications in subtle ways, upgrading system libc is the easiest way to render your system unbootable if you make a mistake in the update process.

Option #4 is quite involved technically. You can find more details here.

Find elsewhere
🌐
Ubuntu
launchpad.net › ubuntu › jammy › +source › glibc
Jammy (22.04) : glibc package : Ubuntu
dbgsym in ubuntu impish. libc6: ... in ubuntu impish. ... The package versions that were published when the distribution release was made. ... Package versions containing security fixes for the released distribution. It is a good idea to have security updates turned on for your system. ... Package versions including new features after the distribution release has been made. Updates are usually turned on by default after a fresh install. ... GNU C library (glibc) is one of ...
🌐
Ubuntu
packages.ubuntu.com › search
Ubuntu – Package Search Results -- glibc
You have searched for packages that names contain glibc in all suites, all sections, and all architectures. Found 4 matching packages. jammy (22.04LTS) (doc): GNU C Library: Documentation 2.35-0ubuntu3.13 [security]: all
🌐
Its Linux FOSS
itslinuxfoss.com › home › ubuntu › how to install glibc on ubuntu 22.04
How to Install glibc on Ubuntu 22.04 – Its Linux FOSS
September 26, 2022 - Ubuntu 22.04 users can install glibc package by executing the command “sudo apt install glibc-source”. The installation method is described here in detail.
🌐
Linux Mint Forums
forums.linuxmint.com › board index › chat › chat about linux mint
Has anyone made any attempt to upgrade glibc? - Linux Mint Forums
January 27, 2024 - [...] On Ubuntu Mantic or on incoming Noble it is 2.38. Note that a given version of glibc offers an ascending compatibility and can be used by programs requiring a lower version: ... strings /usr/lib/x86_64-linux-gnu/libc.so.6|grep GLIBC_ GLIBC_2.2.5 GLIBC_2.2.6 GLIBC_2.3 GLIBC_2.3.2 GLIBC_2.3.3 GLIBC_2.3.4 GLIBC_2.4 GLIBC_2.5 GLIBC_2.6 GLIBC_2.7 GLIBC_2.8 GLIBC_2.9 GLIBC_2.10 GLIBC_2.11 GLIBC_2.12 GLIBC_2.13 GLIBC_2.14 GLIBC_2.15 GLIBC_2.16 GLIBC_2.17 GLIBC_2.18 GLIBC_2.22 GLIBC_2.23 GLIBC_2.24 GLIBC_2.25 GLIBC_2.26 GLIBC_2.27 GLIBC_2.28 GLIBC_2.29 GLIBC_2.30 GLIBC_2.31 GLIBC_2.32 GLIBC_2.33 GLIBC_2.34 GLIBC_2.35 GLIBC_PRIVATE So, the idea would be to install glibc 2.38 to be able to use programs requiring it, without breaking the system.
🌐
Ubuntu
packages.ubuntu.com › source › focal › glibc
Ubuntu – Details of source package glibc in focal
September 1, 2022 - two or more packages specified (glibc focal) · Content Copyright © 2026 Canonical Ltd.; See license terms. Ubuntu is a trademark of Canonical Ltd. Learn more about this site