Pergunta

Então, estou construindo um projeto e ele usa funções de uma biblioteca compilada (.dylib ou .so). Eu tenho os cabeçalhos e os arquivos da biblioteca (tudo isso faz parte do QTroot, btw) em locais apropriados, mas quando tento construir meu projeto no Xcode, recebo um erro de depurador:

Dyld: Biblioteca não carregada: @rpath/librio.so referenciado de:/users/paulthompson/documents/programação/construção produtos/depury/macheliosim.app/contents/macOS/machelioSossim Motivo: imagem não encontrada Os formatados de dados temporariamente indisponíveis, serão transmitidos após um 'continuar'. (Não é possível chamar o carregador no momento, ele está bloqueado.)

Agora, o próprio programa que é construído será bom se eu o abrir do Finder, mas sempre que eu tentar executá -lo no Xcode, ele me refere. O que é essa coisa de RPath, e por que o depurador não pode encontrar as bibliotecas, mesmo que o próprio Xcode saiba onde eles estão, e aparentemente o programa quando executado do Finder pode encontrá -los também?

Foi útil?

Solução

http://en.wikipedia.org/wiki/rpath_(linking)

É um caminho armazenado no binário para encontrar libs compartilhados. Quando você inicia o aplicativo do Finder, provavelmente é um pacote de aplicativos? Quando os pacotes de aplicativos são criados, as bibliotecas compartilhadas são copiadas no pacote de aplicativos e os caminhos para as bibliotecas empacotadas se tornam relativas na época. (@Executable_Path /../ Frameworks/Foobar). Como você criou a versão que funciona do Finder?

O erro acima ocorre na hora do link ou ao iniciar o aplicativo do Xcode? (No último caso, tente com dyld_library_path)

Além disso, a extensão .so para Librio em vez de .dylib parece um pouco suspeito.

Outras dicas

Adicione o RPath na fase de ligação, como neste exemplo (no QT Creator):

Libs += -l/usr/local/root/lib -lgui -lcore -lcint -lrio -lnet -lhist -lgraf -lgraf3d -lgpad -ltree -lrint -lposcript -lmatrix -lphysics -lmathcore -lhread -lpththtrix ,lphysics -lmathcore -lhread -lpththtrix ,lphysics -lmathcore -lhread -lpththtrix ,lphysics -lmathcore -lhread -lpth -rpath,/usr/local/root/lib -lm -ldl

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