Skip to content

Incompatible Binary (bb) (GLIBC_2.38) and Unclear Build Instructions for Non-C++ Users #1438

@EggsyOnCode

Description

@EggsyOnCode

1. Incompatibility Due to glibc Version

The latest precompiled binary appears to be built against glibc version 2.38. This results in runtime errors on systems running older (yet widely used) versions of glibc, such as 2.31 or 2.35.

Example error:

./bb: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by ./bb)
./bb: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by ./bb)
./bb: /lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by ./bb)

Running readelf on the binary reveals dynamic dependencies on:

GLIBC_2.38
GLIBC_2.34
GLIBC_2.33
GLIBCXX_3.4.32
...

Recommendation:

  • Consider compiling the release binary against an older, more widely supported version of glibc (e.g., 2.27–2.31).
  • Alternatively, providing a statically linked binary (e.g., with musl) would ensure better portability.
  • Building within an older environment (e.g., Docker containers based on debian:buster or ubuntu:18.04) could also help produce broadly compatible binaries.

2. Lack of Clear Build Instructions

The current build process assumes familiarity with CMake and related C++ build tools. For developers or users without a background in C++ or CMake, the instructions are difficult to follow and require manual setup of various components.

Recommendation:

  • Include a simplified build script (e.g., build.sh) that encapsulates the required CMake commands such as:

    mkdir build && cd build
    cmake ..
    make
  • Consider adding a Makefile that wraps the build process for convenience.

  • Alternatively, providing a Dockerfile or containerized development environment would greatly reduce the setup burden for non-C++ users.

Metadata

Metadata

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions