链接被抬高..什么是-rpath?MacOS X.

Tra*_*sIV 5 xcode linker qt rpath dynamic-linking

所以,我正在构建一个项目,它使用编译库(.dylib或.so)中的函数.我在适当的位置有头文件和库文件(这是QtRoot,btw的所有部分),但是当我尝试在Xcode中构建我的项目时,我得到一个调试器错误:

dyld:未加载库:@ rpath/libRIO.so引用自:/ Users/paulthompson/Documents/Programming/Build Products/Debug/MacHeliosSim.app/Contents/MacOS/MacHeliosSim原因:找不到图像sharedlibrary apply-load-rules all数据格式化程序暂时不可用,将在"继续"后重试.(目前无法调用加载程序,它被锁定.)

现在,如果我从Finder中打开它,那么构建的程序本身就可以正常运行,但每当我尝试从Xcode运行它时,它就会对我产生影响.什么是这个rpath的东西,为什么调试器找不到库,即使Xcode本身知道它们在哪里,显然从Finder运行的程序也可以找到它们?

Fra*_*eld 3

http://en.wikipedia.org/wiki/Rpath_(链接)

它是存储在二进制文件中的路径,用于查找共享库。当您从 Finder 启动应用程序时,它可能是一个应用程序包?创建应用程序包时,共享库将被复制到应用程序包中,然后捆绑库的路径将变为相对路径。(@executable_path/../Frameworks/foobar)。您是如何创建适用于 Finder 的版本的?

上述错误是否发生在链接时或从 xcode 启动应用程序时?(在后一种情况下,尝试使用 DYLD_LIBRARY_PATH)

另外,libRIO 的 .so 扩展名而不是 .dylib 看起来有点可疑。