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

¿Fue útil?

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().

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top