Question

Je voudrais inclure libQtGui.so.4 libQtNetwork.so.4 et libQtCore.so.4 dans le même répertoire que l'endroit où mon application réside. Comment puis-je faire Qt comprendre cela? y but est d'avoir une application autonome qui utilise des bibliothèques partagées

Était-ce utile?

La solution

Réglage de la variable d'environnement LD_LIBRARY_PATH est une option. Par exemple:

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

Une autre option consiste à définir la RPATH de votre application Qt pendant la liaison. Réglage de la RPATH à la valeur « $ ORIGIN » provoquera l'éditeur de liens dynamique pour regarder dans le même répertoire que votre application Qt lors de l'exécution. Par exemple, si vous utilisez qmake, ajoutez l'extrait suivant à votre fichier de projet:

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

Cela va régler le RPATH à « $ ORIGIN: $ ORIGIN / lib: $ ORIGIN / libs », ce qui signifie que l'éditeur de liens dynamique regardera d'abord dans l'emplacement de votre application Qt, puis dans un sous-répertoire lib à son emplacement, puis dans un sous-répertoire libs à son emplacement, et enfin dans un système endroits définis.

Autres conseils

UNIX / Linux va regarder dans LD_LIBRARY_PATH (si elle est définie) avant de regarder dans les libs standard du système. Donc, si vous définissez, vous pouvez en effet remplacer. Tout comme la définition du chemin sous Windows. Même effet. Les questions de commande.

Vous pouvez ajouter ou ./. à LD_LIBRARY_PATH ainsi.

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

LD_LIBRARY_PATH et QMAKE_RPATH jamais travaillé pour moi. Au lieu de cela, je mis QMAKE_RPATHDIR dans mon fichier .pro. Par exemple, après avoir construit et installé (make install) Qt, il a été placé dans /usr/local/Trolltech/Qt-4.8.5/lib/. Je vous écris alors ce qui suit dans mon fichier .pro:

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

Note 1: Les chemins relatifs semblent ne pas fonctionner. Préférez des chemins absolus.

Note 2: Lorsque vous alors make, vous pouvez voir que l'option suivante est donnée à l'éditeur de liens: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/

Note 3: Pour être sûr que les liens binaires dynamiquement à la bibliothèque correcte, vous pouvez afficher la version de Qt lors de l'exécution délivrée par qVersion().

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top