有没有办法在Xcode中更改动态库搜索路径

时间:2013-03-27 11:13:38

标签: objective-c cocoa xcode4.5 dylib install-name-tool

以下是我的情景,

  1. 在我的应用程序中,我必须使用libopus库,我下载并安装,编译 - >安装过程与任何其他开源库一样正常,

  2. 我将libopus.a与我的应用程序相关联,我的方式是,默认情况下它将安装在/ usr / local / lib中,所以我从那里拖动并将其添加到我的应用程序中,

  3. 工作正常,我的机器没有错误,

    在另一台机器上,我期待它能够顺利运行,因为我静态地包含了这个库,但它的抛出错误为

    dyld: Library not loaded: /usr/local/lib/libopus.0.dylib
    

    所以我得出结论,libopus.a以某种方式包括libopus.0.dylib也是动态的,

    现在我可以在我的构建设置中添加一个复制阶段,因此它将被复制到../Framework文件夹

    如果我做otool -L libpus.a那么它会显示以下结果

    otool -L /usr/local/lib/libopus.a
    Archive : /usr/local/lib/libopus.a
    /usr/local/lib/libopus.a(bands.o):
    /usr/local/lib/libopus.a(celt.o):
    /usr/local/lib/libopus.a(cwrs.o):
    /usr/local/lib/libopus.a(entcode.o):
    /usr/local/lib/libopus.a(entdec.o):
    /usr/local/lib/libopus.a(entenc.o):
    /usr/local/lib/libopus.a(repacketizer.o):
    

    它不依赖于dylib库 现在我的问题是 如何告诉应用程序首先查看此路径

    我尝试了以下选项,

    1. install_name_tool但似乎它可以在其他机器上运行,因此用户需要运行此脚本NOT DEVELOPER,

    2. 尝试设置xcode中的某个选项以设置RUNTIME搜索路径以找到该特定的dylib但到目前为止没有成功

1 个答案:

答案 0 :(得分:0)

install_name_tool由开发人员在构建过程中运行,而不是由用户运行。

如果您正在构建库,则应使用libtool(1)选项-install_name @rpath;否则,您可以install_name_tool(1)使用-id @rpathdylib上执行相同的操作。然后,在构建应用程序时,将“Runpath搜索路径”设置为安装库的路径。

Apple在Mach-O Programming TopicsDynamic Library Programming Topics中提供了一些很好的文档。

相关问题