Frage

Ich möchte libqtgui.so.4 libqtnetwork.so.4 und libqtcore.so.4 in demselben Verzeichnis wie in meiner App einbeziehen. Wie würde ich Qt das verstehen lassen? y Zweck ist es, eine eigenständige App zu haben, die gemeinsam genutzte Bibliotheken verwendet

War es hilfreich?

Lösung

Das Einstellen der Umgebungsvariablen ld_library_path ist eine Option. Zum Beispiel:

export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH

Eine andere Möglichkeit besteht darin, den RPATH Ihrer QT -Anwendung während der Verknüpfung festzulegen. Wenn Sie den RPATH auf den Wert "$ origin" setzen, wird der dynamische Linker in demselben Verzeichnis wie Ihre QT -Anwendung zur Laufzeit nachgesehen. Wenn Sie beispielsweise QMake verwenden, fügen Sie Ihrer Projektdatei den folgenden Snippet hinzu:

unix:!mac{
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
  QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
  QMAKE_RPATH=
}

Dadurch wird der RPATH auf "$ origin: $ origin/lib: $ origin/libs" festgelegt, was bedeutet, dass der dynamische Linker zunächst in den Ort Ihrer QT -Anwendung und dann in einem Lib -Unterverzeichnis an seinem Standort und dann in einem LIBS schaut Unterverzeichnis an seinem Standort und schließlich an jedem systemdefinierten Standorte.

Andere Tipps

UNIX / Linux wird zuerst in LD_LIBRARY_PATH (falls eingestellt) suchen, bevor sie in die System -Standard -Libs sucht. Wenn Sie das einstellen, können Sie tatsächlich überschreiben. Genau wie das Festlegen des Pfades unter Windows. Gleicher Effekt. Die Bestellung ist wichtig.

Sie können hinzufügen ./ oder. auch an ld_library_path.

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

LD_LIBRARY_PATH und QMAKE_RPATH Nie für mich gearbeitet. Stattdessen setze ich QMAKE_RPATHDIR in meinem .pro Datei. Zum Beispiel nach dem Bau und der Installation (make install) Qt, es wurde in platziert /usr/local/Trolltech/Qt-4.8.5/lib/. Ich schreibe dann Folgendes in meine .pro Datei:

QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/

Anmerkung 1: Relative Pfade scheinen nicht zu funktionieren. Bevorzugen Sie absolute Wege.

Anmerkung 2: Wenn Sie dann sind make, Sie können sehen, dass dem Linker die folgende Option gegeben wird: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/

Anmerkung 3: Um sicherzustellen, dass die Binärverbindungen dynamisch mit der richtigen Bibliothek verbunden sind, können Sie die Version von QT zur Laufzeit angezeigt werden qVersion().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top