godotengine / godotengine/godot-cpp

Linux extensions built on glibc 2.41+ produce binaries incompatible with older Godot binaries

Open
#1,976 4 comments 0 reactions 0 assignees View on GitHub
documentation
Dominant language
C++
Stars
2.7k
Forks
809
Avg merge
1d 3h
Merged PRs (30d)
8

Description

### Godot version

tested 4.6.2 stable

### godot-cpp version

4.5

### System information

Arch Linux latest, intel i7-9700

### Issue description

glibc 2.41 added new versioned symbols for these C23 float-math functions, godot-cpp's build doesn't pin to old versions.

Suggested fix: opt-in flag in tools/linux.py/cmake/linux.cmake that compiles a .symver shim, like Steam/Chromium do. At least from what i can think of. Alternatives may exist

### Steps to reproduce

- Repro: build on Arch (glibc 2.43), load in any Godot binary built on glibc < 2.41 → version 'GLIBC_2.43' not found for sqrtf/acosf/asinf/atan2f.

### Minimal reproduction project

N/A, build on arch latest stable. any extension with scons. then reports:
libm.so.6: version `GLIBC_2.43' not found (required by /example/path/to/addon.linux.editor.x86_64.so).
ERROR: drivers/unix/os_unix.cpp:1061 - Condition "!FileAccess::exists(path)" is true. Returning: ERR_FILE_NOT_FOUND
ERROR: GDExtension dynamic library not found: 'example/path/to/addon.gdextension'.

file paths are replaced for privacy

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.