¿Cómo puedo configurar en una aplicación Qt encuentra un módulo de Qt?
-
21-09-2019 - |
Pregunta
Me gustaría incluir libQtGui.so.4 libQtNetwork.so.4 y libQtCore.so.4 en el mismo directorio que reside en mis aplicaciones. ¿Cómo puedo hacer Qt entiende esto? Y el propósito es tener una aplicación independiente que utiliza bibliotecas compartidas
Solución
Configuración de la variable de entorno LD_LIBRARY_PATH es una opción. Por ejemplo:
export LD_LIBRARY_PATH=/path/to/dir/with/libs:$LD_LIBRARY_PATH
Otra opción es establecer el rPath de su aplicación Qt durante la vinculación. Ajuste de la rPath al valor "$ ORIGEN" hará que el enlazador dinámico que debe buscar en el mismo directorio que la aplicación Qt en tiempo de ejecución. Por ejemplo, si se usa qmake, añadir el siguiente fragmento de su archivo de proyecto:
unix:!mac{
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/lib
QMAKE_LFLAGS += -Wl,--rpath=\\\$\$ORIGIN/libs
QMAKE_RPATH=
}
Esto establecerá el rPath a "$ ORIGEN: $ ORIGEN / lib: $ ORIGIN / libs", lo que significa que el enlazador dinámico buscará primero en la ubicación de su aplicación Qt, a continuación, en un subdirectorio lib en su lugar, a continuación, en un libs subdirectorio en su ubicación, y finalmente en cualquier ubicación del sistema definido.
Otros consejos
UNIX / Linux se va a ver en LD_LIBRARY_PATH (si está configurada) primero antes de buscar en el sistema de bibliotecas estándar. Así que si se establece que, de hecho, se puede anular. Al igual que el establecimiento de la variable PATH en Windows. El mismo efecto. Los asuntos de pedidos.
Puede añadir o ./. a LD_LIBRARY_PATH también.
export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH
LD_LIBRARY_PATH
y QMAKE_RPATH
nunca trabajó para mí. En su lugar, me puse QMAKE_RPATHDIR
en mi archivo .pro
. Por ejemplo, después de haber construido e instalado (make install
) Qt, se ha colocado en /usr/local/Trolltech/Qt-4.8.5/lib/
. a continuación, escribo lo siguiente en mi archivo .pro
:
QMAKE_RPATHDIR += /usr/local/Trolltech/Qt-4.8.5/lib/
Nota 1: En relación caminos no parecen funcionar. Prefiero rutas absolutas.
Nota 2: Cuando a continuación make
, se puede ver que la siguiente opción es dado al enlazador: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/
Nota 3: Para asegurarse de que los enlaces binarios de forma dinámica a la biblioteca correcta, se puede visualizar la versión de Qt en tiempo de ejecución entregado por qVersion()
.