我看了一些相关的问题,似乎无法找到自己的解决方案。Xcode,建设和dylibs
基本上我在我的Xcode项目中使用libmp3lame.dylib。 lame的安装过程会生成.dylib并将其放在usr/local/lib中,并让Xcode生成并运行项目。我更改了“库搜索路径”以包含上述文件夹。这工作正常。
现在来制作一个发布版本,并且我希望在捆绑包中包含.dylib,以便用户不必忍受安装阶段或类似的任何事情。我创建了目标的复制文件阶段,并将.dylib转储到软件包内容的Frameworks文件夹中。但是,在二进制文件上运行otool显示,不是在软件包内部使用.dylib,编译器已经将它链接到usr/local/lib版本(即使我删除了该版本)。
查看otool输出中的其他结果我有其他框架链接到束内,而不是.dylib。在Xcode中查看这些框架和.dylib的属性,除了文件类型之外,我看不到任何差异。
我的搜索建议我需要使用rpath或类似的,但我不知道在Xcode中应用此位置。
我猜测ld的相关部分是:“-lmp3lame.0.0.0”。 -l是否处理文件名本身的lib部分?否则我很困惑,因为文件名是libmp3lame.0.0.0.dylib。 – Septih 2010-08-25 09:53:28
啊,它的确如此。我认为问题在于它在构建版本中定义的目录(库搜索路径)中寻找libmp3lame.dylib,但复制文件阶段不会将dylib放入该包中直到ld之后。所以新的困境是如何明确地告诉它在那里寻找图书馆,而不是仅仅在几个文件夹中寻找一个。仍然困惑,为什么它连接到usr/local/lib文件夹,当我删除.dylib那里虽然... – Septih 2010-08-25 10:19:45