以下是我的情景,
在我的应用程序中,我必须使用libopus库,我下载并安装,编译 - >安装过程与任何其他开源库一样正常,
我将libopus.a与我的应用程序相关联,我的方式是,默认情况下它将安装在/ usr / local / lib中,所以我从那里拖动并将其添加到我的应用程序中,
工作正常,我的机器没有错误,
在另一台机器上,我期待它能够顺利运行,因为我静态地包含了这个库,但它的抛出错误为
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库 现在我的问题是 如何告诉应用程序首先查看此路径
我尝试了以下选项,
install_name_tool但似乎它可以在其他机器上运行,因此用户需要运行此脚本NOT DEVELOPER,
尝试设置xcode中的某个选项以设置RUNTIME搜索路径以找到该特定的dylib但到目前为止没有成功
答案 0 :(得分:0)
install_name_tool
由开发人员在构建过程中运行,而不是由用户运行。
如果您正在构建库,则应使用libtool(1)
选项-install_name @rpath
;否则,您可以install_name_tool(1)
使用-id @rpath
在dylib
上执行相同的操作。然后,在构建应用程序时,将“Runpath搜索路径”设置为安装库的路径。
Apple在Mach-O Programming Topics和Dynamic Library Programming Topics中提供了一些很好的文档。