我有一个我编译为动态库的项目集合。这些.dylib中的每一个都依赖于其他各种.dylibs,我希望将其放置在各种其他目录中(即一些位于可执行路径,一些位于加载路径,一些位于固定路径)。如何正确设置运行路径,搜索路径和安装名称?
当我在编译的库上运行otool -L
时,我得到了这些依赖关系的路径列表,但我知道如何设置/确定这些路径。它们几乎都是伪随机的。我花了几个小时在Xcode的“构建设置”中尝试更改这些路径(w/@rpath,@executable_path,@loader_path等),但我似乎无法更改任何内容(如通过运行otool -L
)。我甚至完全知道在哪里添加这些标志和并不真正了解以下或如何正确地使用它们之间的区别:
链接 - “动态库安装名称”
链接 - “运行路径搜索路径“
链接 - ‘其他链接标志’
搜索路径 - ‘库搜索路径’
当我运行的各种库install_name_tool -change
,我能够再次成功改变运行路径搜索路径(如通过运行验证otool -L
确认)。
我正在运行Xcode 4.2,我非常接近放弃,只是使用运行install_tool_name进行更改的后构建脚本。但它是一个kludge黑客修复,我宁愿不这样做。
我在哪里可以看到如何设置dylib依赖关系的搜索/运行路径?
任何人有任何想法,我可能做错了什么?
虽然不是我一直在寻找确切的答案,帮我找出我的问题。 'otool -L'列出所有的安装名称。列出的第一个“安装名称”是库本身的名称。列出的任何其他路径都是针对其依赖项的。假设你已经从源代码编译了依赖关系,在Xcode中设置“动态库安装名称”将正确设置这些路径。但在我的情况下,依赖来自第三方,所以路径已经设置。由于我无法控制第三方库的编译,我不得不使用'install_name_tool -change'。 – BigMacAttack 2012-03-23 04:19:21
很高兴你知道了。 – 2012-03-23 04:25:11
非常有帮助的答案.. – Ahmed 2013-07-08 22:50:28