MAC下加载动态库

MAC引用动态库时报错:在这里插入图片描述

查看一个可执行文件或者动态库引用的第三方库路径:otool -L xxx.dylib

  • 第一行是动态库的安装名称(INSTALL Name)。当另一个客户端链接到这个 dylib 时,dylib 的安装 ID 会被复制到客户端中作为dylib的安装路径。
  • 后边的才是这个动态库引用到的第三方库

使用install_name_tool 的id参数来修改这个install name:
sudo install_name_tool -id @executable_path/../xxx.dylib xxx.dylib

将动态链接库添加到.app的搜索路径中:
install_name_tool -add_rpath /xxx/lib ./NetAnim

@executable_path :可执行程序所在的目录
@loader_path:表示每一个被加载的 binary (包括App, dylib, framework,plugin等) 所在的目录。
@rpath是一个类似Shell中的PATH的变量,程序在执行时会从@rpath指定的路径中寻找动态链接库文件。

MAC:@rpath的坑

踩坑1:install_name修改失败

在这里插入图片描述
库文件加载失败,通过otool -l xxx.dylib查看报错中的“command 5”。
在这里插入图片描述

  • 如果为一个Mac OS X版本构建对象,然后在早期的Mac OS X版本上使用该对象,则可能会发生“未知加载命令”错误。

Mac load命令损坏

otool-目标文件显示工具

你可能感兴趣的:(macos)