新Mac运行旧应用遇libxls.3.dylib依赖问题求解决
解决旧Mac应用依赖libxls.3.dylib的运行问题
应用依赖信息(来自otool输出)
Load command 15
cmd LC_LOAD_DYLIB
cmdsize 56
name /usr/local/lib/libxls.3.dylib (offset 24)
方案1:临时加载库(无需修改可执行文件)
直接通过环境变量指定依赖库路径,运行应用时执行以下命令:
DYLD_INSERT_LIBRARIES=/绝对路径/到你的/libxls.3.dylib ./xteewee.00
替换命令中的/绝对路径/到你的/libxls.3.dylib为库文件实际所在路径
方案2:修复签名并修改加载路径
如果需要永久修改可执行文件的加载路径,按以下步骤操作:
- 移除原签名(解决修改路径后的签名失效问题):
codesign --remove-signature xteewee.00
- 重新执行路径修改命令:
install_name_tool -change /usr/local/lib/libxls.3.dylib @executable_path/../Frameworks/libxls.3.dylib xteewee.00
- 将
libxls.3.dylib放到对应路径(若为应用包,放入Contents/Frameworks;若为独立可执行文件,确保库在@executable_path/../Frameworks能被找到) - 可选:给修改后的可执行文件自签名(避免系统安全拦截):
codesign --force --deep --sign - xteewee.00
方案3:解决复制lib到/usr/local/lib失败的问题
针对复制失败的情况,按以下步骤排查修复:
- 若
/usr/local/lib不存在,先创建目录:
sudo mkdir -p /usr/local/lib
- 执行复制并修复权限:
sudo cp /路径/到/libxls.3.dylib /usr/local/lib/ sudo chmod 755 /usr/local/lib/libxls.3.dylib
- 若因SIP限制仍失败,改用用户目录下的库路径:
- 创建用户库目录:
mkdir -p ~/lib - 复制库到该目录:
cp /路径/到/libxls.3.dylib ~/lib/ - 修改可执行文件加载路径为
@executable_path/../../lib/libxls.3.dylib(根据实际相对路径调整),之后按方案2的步骤处理签名
- 创建用户库目录:
内容的提问来源于stack exchange,提问作者Young Shway
相关产品推荐
相关产品推荐

