Wie werden .so-Dateien in Ubuntu verwendet?


8

Ich bin sehr neu in Linux und Ubuntu und habe meine einfache Spiel-Engine auf Linux portiert. Die Engine befindet sich in einer .so-Datei und ist mit der ausführbaren Datei verknüpft.

Ich kann meine ausführbare Datei nicht ausführen, da sie besagt, dass die Datei Engine.so nicht gefunden werden kann (wenn sie im Terminal ausgeführt wird).

Wenn ich unter Ubuntu entwickle, wie kann ich dann die ausführbare Datei dazu bringen, die Bibliothek zu finden, wo sie jemals ist?

Die zweite Frage ist, wie die .so-Dateien beim Verteilen der Anwendung installiert werden. Ich nehme an, sie werden nicht nur in das gleiche Verzeichnis wie die exe wie in Windows gestellt? Wie werden sie installiert?

Antworten:


9

Executables suchen Bibliotheken in einer Reihe von Orten, zum Beispiel /lib, /usr/lib, /usr/local/lib, ... also wenn du deine nicht .soDatei in einem dieser Orte ( /usr/local/libdie ausführbare Datei wird möglicherweise ein guter Ort sein), nicht ausgeführt werden .

Sie können explizit festgelegte Verzeichnisse angeben, nach denen gesucht werden soll, indem Sie eine Umgebungsvariable festlegen, LD_LIBRARY_PATHdie beliebige Verzeichnisse enthält (z. B. Ihr Entwicklungsverzeichnis).


Danke, wenn Programme so installiert werden, dass sie die benötigten Bibliotheken in diesen Ordnern für Sie ablegen?
David Colson

@DavidColson Wenn Sie normalerweise aus dem Quellcode erstellen und dies tun ./configure make make --install(oder was auch immer die Befehlszeichenfolgen für diese make-Datei sind), muss ein Skript automatisch dort installiert werden, wo es nach Skripten und Bibliotheken sucht. Obwohl es Programme gibt, die sich nirgendwo richtig installieren.
Thomas Ward

Viele Pakete von Drittanbietern verwenden den zweiten Mechanismus, damit sie die entsprechenden Versionen der Bibliotheken mit ihrem Installationsprogramm bereitstellen können.
Ignacio Vazquez-Abrams
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.