Pergunta

Gostaria de incluir libQtGui.so.4 libQtNetwork.so.4 e libQtCore.so.4 no mesmo diretório onde meu aplicativo reside.Como eu faria o Qt entender isso?meu objetivo é ter um aplicativo independente que use bibliotecas compartilhadas

Foi útil?

Solução

Definir a variável de ambiente LD_LIBRARY_PATH é uma opção. Por exemplo:

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

Outra opção é definir o RPath do seu aplicativo QT durante a vinculação. Definir o RPath para o valor "$ origem" fará com que o vinculador dinâmico procure no mesmo diretório do seu aplicativo QT no tempo de execução. Por exemplo, se estiver usando o QMake, adicione o seguinte snippet ao seu arquivo de projeto:

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

Isso definirá o RPath como "$ origem: $ origem/lib: $ origem/libs", o que significa que o ligante dinâmico procurará primeiro na localização do seu aplicativo QT e depois em um subdiretório Lib em seu local e depois em um LIBS subdiretório em seu local e, finalmente, em qualquer sistema definido pelo sistema.

Outras dicas

UNIX/Linux irá procurar em LD_LIBRARY_PATH (se definido) primeiro antes de procurar nas bibliotecas padrão do sistema.Então, se você definir isso, poderá realmente substituir.Assim como definir o PATH no Windows.Mesmo efeito.A ordem é importante.

Você pode adicionar ./ ​​ou .para LD_LIBRARY_PATH também.

export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH

LD_LIBRARY_PATH e QMAKE_RPATH nunca funcionou para mim. Em vez disso, eu defino QMAKE_RPATHDIR no meu .pro Arquivo. Por exemplo, depois de ter construído e instalado (make install) Qt, foi colocado em /usr/local/Trolltech/Qt-4.8.5/lib/. Eu então escrevo o seguinte no meu .pro Arquivo:

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

Nota 1: Os caminhos relativos parecem não funcionar. Prefere caminhos absolutos.

Nota 2: quando você então make, você pode ver que a opção a seguir é dada ao vinculador: -Wl,-rpath,/usr/local/Trolltech/Qt-4.8.5/lib/

Nota 3: Para ter certeza de que os links binários dinamicamente à biblioteca correta, você pode exibir a versão do QT no tempo de execução entregue por qVersion().

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top