链接是顶起来的。什么是-rpath? MacOS X
所以,我正在构建一个项目,它使用编译库(.dylib或.so)中的函数。我在适当位置标头和库文件(这是QtRoot的一部分,顺便说一句),但是当我尝试建立我的Xcode项目,我得到一个调试错误:链接是顶起来的。什么是-rpath? MacOS X
dyld: Library not loaded: @rpath/libRIO.so Referenced from: /Users/paulthompson/Documents/Programming/Build Products/Debug/MacHeliosSim.app/Contents/MacOS/MacHeliosSim Reason: image not found sharedlibrary apply-load-rules all Data Formatters temporarily unavailable, will re-try after a 'continue'. (Cannot call into the loader at present, it is locked.)
现在,程序如果我从Finder中打开它,它会自己运行得很好,但是每当我尝试从Xcode运行它时,它都会向我发送消息。这个rpath是什么东西,为什么调试器不能找到这些库,尽管Xcode本身知道它们在哪里,显然当从Finder运行的程序也能找到它们时呢?
http://en.wikipedia.org/wiki/Rpath_(linking)
这是存储在二进制找到共享库的路径。 当你从Finder启动应用程序时,它可能是一个应用程序包?当创建应用程序包时,共享库将被复制到应用程序包中,并且绑定库的路径变得相对于此。 (@executable_path /../框架/ foobar的)。你是如何创建Finder的版本的?
上述错误是否发生在链接时或从xcode启动应用程序? (在后一种情况下,请尝试使用DYLD_LIBRARY_PATH)
此外,libRIO的.so扩展名替代.dylib看起来有点可疑。
添加将rpath的链接阶段,想在这个(Qt Creator中)例如:
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,/usr/local/root/lib -lm -ldl
你错过了你的链路上的右括号。 – 2010-08-12 17:01:52
正确,它是一个.app包。但是,除非将它们包装到实际的二进制文件中,否则它们都不在其中。甚至没有框架目录... 无论如何,.app是通过从Xcode执行'build'或'build and go'来创建的。在'build&go'的go部分或者我选择从Xcode中运行时,该错误会产生。 .so,我认为,实际上是.dylib的sym链接。我链接的一些库文件是实际的.so文件,其他文件是.dylib。我认为在某个地方甚至有一些.a,但我可能是错的。 那么,我是否会缺少一个 – TraxusIV 2010-08-12 21:28:28
复制文件构建阶段? – TraxusIV 2010-08-12 21:29:10