Domanda

Vorrei includere libQtGui.so.4 libQtNetwork.so.4 e libQtCore.so.4 nella stessa directory in cui risiede la mia app. Come farei Qt capire questo? y scopo è quello di avere un'applicazione stand-alone che utilizza le librerie condivise

È stato utile?

Soluzione

Impostazione della variabile d'ambiente LD_LIBRARY_PATH è un'opzione. Ad esempio:

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

Un'altra opzione è quella di impostare il RPATH della vostra applicazione Qt durante il collegamento. Impostazione del RPATH al valore "$ ORIGIN" farà sì che il linker dinamico di guardare nella stessa directory come l'applicazione Qt in fase di esecuzione. Ad esempio, se si utilizza qmake, aggiungere il seguente frammento di codice al file di progetto:

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

Questo imposterà la RPATH a "$ ORIGIN: $ ORIGIN / lib: $ ORIGIN / librerie", il che significa che il linker dinamico cercherà prima nella posizione della vostra applicazione Qt, poi in una sottodirectory lib nella sua posizione, quindi in una sottodirectory librerie nella sua posizione, e, infine, in qualsiasi sistema posizioni definite.

Altri suggerimenti

UNIX / Linux è andare a guardare in LD_LIBRARY_PATH (se impostato) prima di guardare nelle librerie standard e di sistema. Quindi, se si imposta che, si può infatti ignorare. Proprio come l'impostazione del PATH su Windows. Stesso effetto. Gli argomenti di ordinamento.

È possibile aggiungere ./ o. a LD_LIBRARY_PATH pure.

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

LD_LIBRARY_PATH e QMAKE_RPATH mai lavorato per me. Invece, ho impostato QMAKE_RPATHDIR nel mio file .pro. Ad esempio, dopo aver costruito e installato (make install) Qt, è stato posto in /usr/local/Trolltech/Qt-4.8.5/lib/. Ho poi scrivere nel mio file .pro:

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

Nota 1: percorsi relativi sembrano non funzionare. Preferisco percorsi assoluti.

Nota 2: Quando si allora make, si può vedere che la seguente opzione è dato al linker: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/

Nota 3: per essere sicuri che i collegamenti binari in modo dinamico alla libreria corretta, è possibile visualizzare la versione di Qt in fase di esecuzione consegnato da qVersion().

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top