链接是抬高了..什么是-rpath? MacOS X系统
-
27-09-2019 - |
题
所以,我建立一个项目,它从一个编译库(名为.dylib或.so)使用功能。我在适当位置标头和库文件(这是QtRoot的一部分,顺便说一句),但是当我尝试建立我的Xcode项目,我得到一个调试器错误:
dyld的:库未加载:@ rpath的/ libRIO.so 从参考:/用户/ paulthompson /文件/程序/制造产品/调试/ MacHeliosSim.app /内容/ MacOS的/ MacHeliosSim 原因:图片未找到 sharedlibrary应用负载规则所有 一个“继续”之后的数据格式化暂时不可用,将重新尝试。 (目前不能调用到装载机,它被锁定。)
现在,它内置如果我从Finder中打开它会运行得很好程序本身,但每当我尝试从Xcode中运行它,它barfs我。这是什么rpath的东西,为什么不能在调试器找到这些库,尽管它本身的Xcode知道他们在哪里,显然从Finder运行可以找到它们太当程序?
解决方案
http://en.wikipedia.org/wiki/Rpath_(连接)
它是存储在二进制找到共享库的路径。 当你开始从Finder中的应用程序,它可能是一个应用程序捆绑?当创建应用程序包,共享库被复制到应用程序包,并以捆绑的库的路径变得相对然后。 (@executable_path /../框架/ foobar的)。你是如何创建的版本,从Finder中的作品?
是否错误上面开始从xcode中应用程序时发生在链接时或? (在后一种情况下,尝试用DYLD_LIBRARY_PATH)
而且,。所以扩展libRIO代替名为.dylib看起来有点可疑。
其他提示
添加将rpath在链接阶段,像在此(Qt Creator中)示例:
LIBS + = -L / USR /本地/根/ lib中-lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lthread -lpthread -Wl,-rpath,在/ usr /本地/根/ lib中-lm -ldl