`GLIBC_2.34' not found / bei X11

Für allgemeine Fragen zur Programmierung, welche nicht! direkt mit Lazarus zu tun haben.
Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

`GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Ich bekomme bei allen Programmen, egal ob mit C++ oder Lazarus folgende Fehlermeldung, auf einem frisch aufgesetzten Linux Mint, wen ich X11 Funktionen verwende. Dabei habe ich bei Lazarus folgende Units eingebunden "xlib, xutil, x".

Code: Alles auswählen

$ ./hello
./hello: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by ./hello)
Und jetzt das merwürdige: "glxgear", welches auch X11 verwendet läuft. (glygear wird bei Unbunt/Mint mit installiert.)
Und auch Programme, welche normal mit der LCL kompiliert wurden, laufen auch.

Ich dachte immer LCL baue auf gtk/qt auf, und gtk/qt verwendet X11 ?
Was habe ich da falsch verstanden ?

Klar, könnte ich etwas in folgender Richtung machen:

Code: Alles auswählen

sudo apt-get install gcc
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: `GLIBC_2.34' not found / bei X11

Beitrag von PascalDragon »

Hast du die Anwendungen frisch auf dem Mint kompiliert oder rüberkopiert? Was wird ausgegeben, wenn du /lib/x86_64-linux-gnu/libc.so.6 ausführst? (Ja, das ist eine Bibliothek, aber ja, die libc kann auch ausgeführt werden ;) ) Und wenn du es rüberkopiert hast, was ist die entsprechende Ausgabe auf dem ursprünglichen Linux?
FPC Compiler Entwickler

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Das die Datei nicht ausführbar ist.
Muss ich es mit Root Recht erst ausführbar machen ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Habe sie in meinen Home-Ordner kopiert und es kommt folgendes:

Code: Alles auswählen

~/test$ ./libc.so.6 
GNU C Library (Ubuntu GLIBC 2.35-0ubuntu3.1) stable release version 2.35.
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 11.2.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
Das ist der PC, auf dem mein Programm läuft.
Auf dem anderen probiere ich es am Nachmittag.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Auf dem Laptop folgendes:

Code: Alles auswählen

~/test$ ./libc.so.6 
GNU C Library (Ubuntu GLIBC 2.31-0ubuntu9.9) stable release version 2.31.
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 9.4.0.
libc ABIs: UNIQUE IFUNC ABSOLUTE
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/glibc/+bugs>.
Die hat nur 2.31 !
Das dies so viel ausmacht, das ein einfaches "Hello World" den Dienst verweigert.

Was mich aber verwundert, wieso ist die Version auf dem Laptop älter ?
Ich habe den schön brav aktualisiert mit:

Code: Alles auswählen

sudo apt update
sudo apt upgrade
PS: Kann ich die "lib.so.6" auch direkt ausführen, ohne zu kopieren und die Zugriffsrechte zu ändern ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: `GLIBC_2.34' not found / bei X11

Beitrag von PascalDragon »

Mathias hat geschrieben:
So 20. Nov 2022, 13:18
Die hat nur 2.31 !
Das dies so viel ausmacht, das ein einfaches "Hello World" den Dienst verweigert.
Das liegt daran, dass die C-Bibliothek versionierte Symbole enthält, die es ermöglicht Bugs zu fixen, aber nur wenn das Programm auch gegen eine entsprechende Bibliothek gelinkt wird. Im Gegensatz zu Windows findet bei *nix-Systemen bereits zur Kompilierzeit eine Überprüfung der Symbole statt (deswegen muss man auch die *.so Bibliotheken greifbar haben, wenn man cross kompiliert) und wenn es ein versioniertes Symbol gibt, wird gegen das jüngste gelinkt. Das heißt aber auch, dass die Anwendung dann nicht mehr auf einer Platform mit einer älteren Bibliothek laufbar ist (da die Anwendung sich ja dann auf gefixte Funktionen verlässt).
Mathias hat geschrieben:
So 20. Nov 2022, 13:18
Was mich aber verwundert, wieso ist die Version auf dem Laptop älter ?
Ich habe den schön brav aktualisiert mit:

Code: Alles auswählen

sudo apt update
sudo apt upgrade
Weil nicht alle Änderungen auf ältere Versionen der Distros zurück portiert werden.
Mathias hat geschrieben:
So 20. Nov 2022, 13:18
PS: Kann ich die "lib.so.6" auch direkt ausführen, ohne zu kopieren und die Zugriffsrechte zu ändern ?
Bei mir hat das bisher immer geklappt, keine Ahnung, warum das bei dir nicht so ist...
FPC Compiler Entwickler

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Weil nicht alle Änderungen auf ältere Versionen der Distros zurück portiert werden.
Dies verstehe ich nicht. Ich habe auf allen Computern das gleiche Mint. Und Sachen die im System etwas verändern habe ich über die Paketverwaltung gemacht.
Auf 2 Computer, inklusive das frisch installierte Mint in der VB, haben die neue Version und auf einem frisch installierten und geupdaten Laptop, ist die alte Version drauf.
Bei mir hat das bisher immer geklappt, keine Ahnung, warum das bei dir nicht so ist...
Hast du einfach folgendes eingegeben ?

Code: Alles auswählen

/lib/x86_64-linux-gnu/libc.so.6
Bei mir kommt nur dies:

Code: Alles auswählen

$ /lib/x86_64-linux-gnu/libc.so.6
bash: /lib/x86_64-linux-gnu/libc.so.6: Keine Berechtigung
oder

Code: Alles auswählen

$ sudo /lib/x86_64-linux-gnu/libc.so.6[sudo] Passwort für tux:       
sudo: /lib/x86_64-linux-gnu/libc.so.6: Befehl nicht gefunden
Das liegt daran, dass die C-Bibliothek versionierte Symbole enthält, die es ermöglicht Bugs zu fixen, aber nur wenn das Programm auch gegen eine entsprechende Bibliothek gelinkt wird.
Dies ist echt mühsam, wen man ein Programm weiter geben will.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: `GLIBC_2.34' not found / bei X11

Beitrag von af0815 »

Mathias hat geschrieben:
Mo 21. Nov 2022, 08:37
Dies ist echt mühsam, wen man ein Programm weiter geben will.
Ich nehme an, das iste einer der Gründe, warum AppContainer so in Mode sind
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

ps4711
Beiträge: 16
Registriert: Mi 1. Dez 2021, 13:39
OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
CPU-Target: 64Bit

Re: `GLIBC_2.34' not found / bei X11

Beitrag von ps4711 »

@Mathias
Ich weiß nicht ob du schon über diese Diskussion gestolpert bist:

https://forum.lazarus.freepascal.org/in ... 888.0.html

Der ultimative Lösungsansatz wird hier zwar auch nicht beschrieben. Aber vielleicht ist ja was für dich dabei.

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: `GLIBC_2.34' not found / bei X11

Beitrag von PascalDragon »

Mathias hat geschrieben:
Mo 21. Nov 2022, 08:37
Weil nicht alle Änderungen auf ältere Versionen der Distros zurück portiert werden.
Dies verstehe ich nicht. Ich habe auf allen Computern das gleiche Mint. Und Sachen die im System etwas verändern habe ich über die Paketverwaltung gemacht.
Auf 2 Computer, inklusive das frisch installierte Mint in der VB, haben die neue Version und auf einem frisch installierten und geupdaten Laptop, ist die alte Version drauf.
Ich habe keine Ahnung über die Versionierung bei Mint, ich nutze ArchLinux.
Mathias hat geschrieben:
Mo 21. Nov 2022, 08:37
Bei mir hat das bisher immer geklappt, keine Ahnung, warum das bei dir nicht so ist...
Hast du einfach folgendes eingegeben ?

Code: Alles auswählen

/lib/x86_64-linux-gnu/libc.so.6
Bei mir kommt nur dies:

Code: Alles auswählen

$ /lib/x86_64-linux-gnu/libc.so.6
bash: /lib/x86_64-linux-gnu/libc.so.6: Keine Berechtigung
oder

Code: Alles auswählen

$ sudo /lib/x86_64-linux-gnu/libc.so.6[sudo] Passwort für tux:       
sudo: /lib/x86_64-linux-gnu/libc.so.6: Befehl nicht gefunden

Code: Alles auswählen

[xxx@Tayet ~]$ /usr/lib/libc.so.6
GNU C Library (GNU libc) stable release version 2.36.
Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
Compiled by GNU CC version 12.1.1 20220730.
libc ABIs: UNIQUE IFUNC ABSOLUTE
Minimum supported kernel: 4.4.0
For bug reporting instructions, please see:
<https://bugs.archlinux.org/>.
Mathias hat geschrieben:
Mo 21. Nov 2022, 08:37
Das liegt daran, dass die C-Bibliothek versionierte Symbole enthält, die es ermöglicht Bugs zu fixen, aber nur wenn das Programm auch gegen eine entsprechende Bibliothek gelinkt wird.
Dies ist echt mühsam, wen man ein Programm weiter geben will.
Du musst dein Programm auf der ältesten Distribution kompilieren, die du unterstützen möchtest. Bei C Programmen ist das genauso.
FPC Compiler Entwickler

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Du musst dein Programm auf der ältesten Distribution kompilieren, die du unterstützen möchtest. Bei C Programmen ist das genauso.
Ups, ich habe gerade festgestellt, das auf dem störischen Laptop nur Mint 20.3 installiert ist, und auf den anderen PCs 21.0.
Anscheinend reicht ein

Code: Alles auswählen

sudo apt update
sudo apt upgrade
nicht, um die C-Bibliotheken zu aktualisieren.

Somit empfiehlt es sich als Entwicker auf einer möglichst alten Distro zu entwickeln, was aber irgendwie recht doof ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: `GLIBC_2.34' not found / bei X11

Beitrag von six1 »

sudo apt-get upgrade && sudo apt-get dist-upgrade
Gruß, Michael

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: `GLIBC_2.34' not found / bei X11

Beitrag von PascalDragon »

Mathias hat geschrieben:
Di 22. Nov 2022, 08:41
Somit empfiehlt es sich als Entwicker auf einer möglichst alten Distro zu entwickeln, was aber irgendwie recht doof ist.
Du musst nicht auf einer alten Distro entwickeln, aber auf einer solchen kompilieren. Es reicht also, wenn du eine VM mit der passenden Distro und den nötigen Paketen einrichtest.
FPC Compiler Entwickler

ps4711
Beiträge: 16
Registriert: Mi 1. Dez 2021, 13:39
OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
CPU-Target: 64Bit

Re: `GLIBC_2.34' not found / bei X11

Beitrag von ps4711 »

six1 hat geschrieben:
Di 22. Nov 2022, 09:00
sudo apt-get upgrade && sudo apt-get dist-upgrade
Reicht leider bei xubuntu 20.04 nicht aus :cry: (getestet). Die Versionsnummer der Bibliothek ist von 20.04.3 bis 20.04.5 immer gleich geblieben. Die Vermutung liegt nahe, dass es bei Mint ähnlich ist.

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: `GLIBC_2.34' not found / bei X11

Beitrag von Mathias »

Genau so ist es. Das dist-upgrade macht das Gleiche wie upgrade.
Bei Mint muss man mintupgrade ausführen. Bei Ubuntu auch was Ähnliches, nur weis ich den Namen des Tools nicht.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten