Pregunta

Por lo tanto, estoy construyendo un proyecto, y utiliza las funciones de una biblioteca compilada (.dylib o .so). Tengo las cabeceras y los archivos de la biblioteca (todo esto es parte de QtRoot, por cierto) en los lugares adecuados, pero cuando intento de construir mi proyecto en Xcode, me sale un error de depurador:

  

dyld: Biblioteca no cargado: @ rpath / libRIO.so     Referenciado a partir de: / Users / / Documentos / Programación / Productos paulthompson Construir / Depuración / MacHeliosSim.app / Contents / MacOS / MacHeliosSim     Motivo: No se encuentra la imagen   SharedLibrary aplica carga-gobierna todo   Formateadores de datos disponible temporalmente, volverá a intentar después de un 'continuar'. (No se puede llamar en el cargador en la actualidad, está bloqueado.)

Ahora, el propio programa que se construye se ejecutará bien si lo abro desde el Finder, pero siempre que intente ejecutarlo desde Xcode, que vomita en mí. ¿Qué es esta cosa rpath, y por qué no puede encontrar el depurador de las bibliotecas, a pesar de que sí Xcode sabe dónde están, y al parecer el programa cuando se ejecuta desde el Finder puede encontrar también?

¿Fue útil?

Solución

http://en.wikipedia.org/wiki/Rpath_ (enlace)

Es una ruta almacenada en el binario para encontrar bibliotecas compartidas. Al iniciar la aplicación desde Finder, es probable que sea un paquete de aplicación? Cuando se crean aplicaciones paquetes, bibliotecas compartidas se copian en el paquete de aplicación, y las rutas de acceso a las bibliotecas de paquetes se vuelven relativa a continuación. (@Executable_path /../ Marcos / foobar). ¿Cómo se crea la versión que funciona desde Finder?

¿El error anterior se produce durante el enlace o cuando se inicia la aplicación desde Xcode? (En el último caso, tratar con DYLD_LIBRARY_PATH)

Además, la extensión .so para Librio en lugar de .dylib parece un poco sospechoso.

Otros consejos

Añadir la rpath en la fase de unión, como en este (en creador qt) ejemplo:

  

LIBS + = -L / usr / local / root / lib -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lthread -lpthread -wl, -rpath, / / ??root usr / local / lib -lm -ldl

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