How to fix the "GLIBCXX_3.4.29 Not Found" error on Linux

If you are using an older Linux distribution, you may get an error similar to the following when trying to start Virola Server or Client:

error:  /lib/x86_64-linux-gnu/libstdc++.so.6: version 'GLIBCXX_3.4.29' not found (required by /usr/bin/virola-server)
This means that the C++ runtime library installed on your system is older than the version used to build the package. Virola requires GLIBCXX_3.4.29 or newer, which is typically provided by GCC 11 or later.

To resolve this issue, install a newer version of the C++ runtime library (libstdc++6) that provides GLIBCXX_3.4.29 or newer.

In this article, you'll find information on how to solve this issue on different Linux distributions.

How to upgrade libstdc++ on Ubuntu

GLIBCXX_3.4.29 is provided by default starting with Ubuntu 22.04 and is usually missing on Ubuntu 20.x. To install GLIBCXX_3.4.29 on Ubuntu 20.x, execute the following commands:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install libstdc++6
After this, Virola Server and Client should start without issues.

How to upgrade libstdc++ on Debian

Debian 11 ships with GCC 10 and provides GLIBCXX_3.4.28 by default while Virola requires GLIBCXX_3.4.29 or newer.

The recommended solution is to upgrade to Debian 12 or later. But if you want to continue using Debian 11, you can install a newer version of the C++ runtime library (libstdc++6) from the Debian 12 repository:

echo "deb http://deb.debian.org/debian bookworm main" | sudo tee /etc/apt/sources.list.d/bookworm.list
sudo apt update
sudo apt install -t bookworm libstdc++6
Optionally, you can verify that the required symbol is available:

strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.29

The command should output GLIBCXX_3.4.29. After completing these steps, Virola Server and Client should start without issues.