Legen Sie LD_LIBRARY_PATH für Anwendungen fest, die vom Desktop aus gestartet wurden

8

Ich habe Qt Creator auf Ubuntu 10.04 LTS installiert. Wenn ich Qt Creator vom Desktop aus starte, kann ich die Anwendung erstellen, an der ich arbeite, sie jedoch nicht ausführen oder debuggen. Nachdem ich einige Probleme hatte, stellte ich fest, dass LD_LIBRARY_PATH nicht für Anwendungen festgelegt ist, die vom Desktop ausgeführt werden. Wenn ich Qt Creator von bash aus starte (wobei LD_LIBRARY_PATH in .bashrc festgelegt ist), läuft alles und debuggt perfekt.

Wie setze ich LD_LIBRARY_PATH so, dass es für alle laufenden Anwendungen festgelegt wird?

dwj
quelle

Antworten:

6

Dies scheint ein Fehler in der Anwendung selbst zu sein. Es sollte ein Wrapper-Skript haben, das alle benötigten LD_LIBRARY_PATHVariablen korrekt festlegt . Seien Sie jedoch vorsichtig, wenn Sie ein solches Skript schreiben, da Sie keinen leeren Teil der LD_LIBRARY_PATHZeichenfolge zwischen den Doppelpunkten haben möchten, die als Pfadtrennzeichen verwendet werden. Dies kann beispielsweise zu einem fehlerhaften Pfad führen, wenn die Variable anfangs leer war (was zu einer führenden leeren Zeichenfolge vor dem Doppelpunkt führt):

LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/some/path/for/app"

Wenn Sie also einen Pfad hinzufügen, sollten Sie zuerst die leere Zeichenfolge testen. Beispiel: Verwenden von Shell-Code:

LD_LIBRARY_PATH=${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}/some/path/for/app
Kees Cook
quelle
2

Erstellen Sie eine neue Datei /etc/ld.so.conf mit:

# Begin /etc/ld.so.conf
/lib
/usr/lib
/usr/X11R6/lib
# whatever else #

Aktualisieren Sie den dynamischen Loader-Cache, indem Sie Folgendes ausführen:

ldconfig
Extender
quelle
0

Legen Sie .bashrcaußerdem die Umgebungsvariable in fest .profile. Diese Datei wird von Ihrer Sitzung verarbeitet und geladen, sodass sie sich auf alles auswirken sollte, was als Benutzer ausgeführt wird. Außerdem: Diese Datei sagt, dass sie nicht von Bash gelesen wird, falls .bashrcvorhanden, aber sie scheint immer noch zu gelten (möglicherweise, da Bash die X-Sitzung erbt, von der aus sie gestartet wurde). Es tut jedoch nicht weh, die Variable in beiden Dateien zu haben.

Jacob Peddicord
quelle
Ich habe auch versucht, .profile ohne Glück zu erstellen.
Dwj
Ich habe irgendwo gelesen, dass es eine "Sicherheits" -Funktion von Ubuntu (Debian?) Gibt, mit der Sie LD_LIBRARY_PATH beim Start nicht festlegen können, da sie nach dem Laden von .profile überschrieben wird. Es gibt immer noch Problemumgehungen.
AlfC
0

Stellen Sie es in /etc/bash.bashrc oben ein, um beim Booten eine systemweite Änderung vorzunehmen.

Roop
quelle