libglut.so.3 nicht auffindbar (Linux)

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Antworten
Mathias
Beiträge: 6899
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

libglut.so.3 nicht auffindbar (Linux)

Beitrag von Mathias »

Will ich die unit GLUT verwenden, motzt er, das "libglut.so.3" nicht gefunden wird.

Ich habe die Source von GLUT ein wenig modifiziert. Dann würde es bei mir laufen.

Code: Alles auswählen

  {$else}
  LoadGlut('libglut.so');
//  LoadGlut('libglut.so.3');
  {$endif}
Soll ich die so als Bug melden ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
corpsman
Lazarusforum e. V.
Beiträge: 1617
Registriert: Sa 28. Feb 2009, 08:54
OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
CPU-Target: 64Bit
Wohnort: Stuttgart
Kontaktdaten:

Re: libglut.so.3 nicht auffindbar (Linux)

Beitrag von corpsman »

*g*, den Fehler hatte ich auch als ich via GLUT den Accumulation buffer testen wollte ;).

Bin Kein Linux Guru, so wie ich das verstehe ist "libglut.so" die eigentliche lib das ".3" ist dann eine Unterversion.

Ich würde erwarten dass das System immer die neueste auf "libglut.so" linkt, wenn ein User wissen will ob das mindestens .3 ist würde ich erwarten, dass es ne "get Version" funktion gibt die er dann prüfen kann.
=> aus meiner Sicht also ein Bug, ich würde es melden. Wenn der Bearbeiter das anders sieht, wird er dir den Bug dann schon entsprechend ablehnen ;)
--
Just try it

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: libglut.so.3 nicht auffindbar (Linux)

Beitrag von theo »

Naja, ein oder ggf. zwei Symlinks würden wohl auch reichen.

libglut.so.3 -> libglut.so.3.12 -> libglut.so.3.12.0 (oder welche Version auch immer).

Eine andere Distri kennt vielleicht kein libglut.so.

Warf
Beiträge: 2118
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: libglut.so.3 nicht auffindbar (Linux)

Beitrag von Warf »

Das ist kein Bug, sondern die Versionierungsstrategie von Linux Systemen um die DLL-Hell die es z.B. unter Windows gibt zu umgehen. Anstelle einfach unversionierte Bibliotheken zu linken und dann in der Softwaredistribution die richtige Version mitzuliefern (was unter Windows dazu führt das jedes Program mehrere DLLs im installationsordner hat, und jede Bibliothek 15 mal installiert wird), werden alle Bibliotheken Zentral installiert und über den Namen versioniert.

Neben den Versionierten installationen gibt es dann auch noch die Developer Packages, sowas wie libglut-devel oder so. Diese installationen enthalten die C/C++ header für die *neuste* verfügbare version, und erstellen einen Symlink von dieser Version auf eine unversionierten namen, also libglut.so.
D.h. diese "libglut.so" sollte nur auf Entwicklungssystemen vorhanden sein, und sollte nur für Entwicklungszwecke benutzt werden. Sobald man seine Software entwickelt hat, sollte man die Version festsetzen und dann die Versionierten Bibliotheken laden.

Deshalb ist in dem Lazarus package eine Versionierte bibliothek referenziert. Es ist die Version für die das Package entwickelt wurde, wo die Entwickler des Packages praktisch für sagen "das läuft im Rahmen meiner Entwicklung so wie erwartet" (modulo bugs und Fehler natürlich).
Wenn diese Version fehlt ist die Lösung nicht die Versionsnummer im Package anzupassen, sondern die Version der Bibliothek zu installieren.

Bei dem .3 handelt es sich aber um die Major version, die neuste GLUT version ist glaube ich 3.2 was eine Unterversion von 3 ist. D.h. der einfachste weg das zu fixen ist ein Symlink in /usr/local/lib zu erzeugen von libglut.so.3.2 auf libglut.so.3. Alternativ könntest du in dem Lazarus package die Versionsnummer auf 3.2 einschränken. Das geht wiederum weil du hierbei eine Einschränkung vornimmst. Während wenn dus auf libglut.so änderst es theoretisch gegen jede version binden könnte (e.g. libglut.so.2 oder wenns irgendwann rauskommt libglut.so.4) für die das package nie entwickelt wurde, ist auf 3.2 runter zu gehen eine Einschränkung, da das package sagt "ich funktioniere mit jeder major Version 3", was 3.2 einschließt. Das hat aber den Nachteil das die Minor versionen schneller out of date laufen.

Long story short, am besten ists einfach bei der Installation deiner Software den Symlink von libglut.so.3.x auf libglut.so.3 zu erstellen und an den Pascal sources nix zu ändern

Antworten