当前位置: 首页 > news >正文

新版 MacOS 无法从 /usr/local/lib 加载动态链接库的解决办法

自己编写的动态链接库在Unix规范下一般位于/usr/local/lib,在2023年及之前的MacOS版本中,直接将动态库安装到该位置即可在程序运行时加载,可是升级MacOS版本后,ld就报错。

错误现象

运行程序,报错

dyld[6376]: Library not loaded: libxxx.dylibReferenced from: <BD86A23A-E5C5-35D0-BE6D-F9B966A01280> ..../build/xxxxReason: tried: 'libxxx.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibxxx.dylib' (no such file), 'libxxx.dylib' (no such file), '..../build/libxxx.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OS/..../build/libxxx.dylib' (no such file), '..../build/libxxx.dylib' (no such file)
zsh: abort      ./xxxx

原因分析

运行

man dyld

可以看到以下文本

DYLD_FALLBACK_LIBRARY_PATHThis is a colon separated list of directories that contain libraries.  If a dylib is not found at itsinstall  path, dyld uses this as a list of directories to search for the dylib.For new binaries (Fall 2023 or later) there is no default.  For older binaries, their is a default fallbacksearch path of: /usr/local/lib:/usr/lib.

意思是说2023年秋之后,/usr/local/lib:/usr/lib不再是DYLD_FALLBACK_LIBRARY_PATH的默认值,所以造成了这个重大的行为改变。

解决方法

将该环境变量export赋值,放到.bashrc/.zshrc在shell开启时自动执行(具体操作略)或在程序启动时手动声明,如

DYLD_FALLBACK_LIBRARY_PATH=/usr/local/lib ./xxxx

即可使程序加载到/usr/local/lib下的动态库,成功运行。

http://www.lryc.cn/news/521042.html

相关文章:

  • 【Varnish】:解决 Varnish 7.6 CDN 静态资源缓存失效问题
  • 【记录】篡改猴插件下载网页m3u8视频
  • PID控制器 (Proportional-Integral-Derivative Controller) 算法详解及案例分析
  • 【Java设计模式-5】装饰模式:给咖啡加点“佐料”
  • C++ using(八股总结)
  • 《分布式光纤传感:架设于桥梁监测领域的 “智慧光网” 》
  • C++(5)
  • 【进程与线程】程序和进程在内存中的表现
  • 个人主页搭建全流程(Nginx部署+SSL配置+DCDN加速)
  • 语音合成的预训练模型
  • 前端组件开发:组件开发 / 定义配置 / 配置驱动开发 / 爬虫配置 / 组件V2.0 / form表单 / table表单
  • Swagger生成Api文档的增强解决方案--knife4j
  • Node.js - HTTP
  • LangChain学习笔记2 Prompt 模板
  • 如何在gitlab cicd中实现每月10号上午执行
  • SimpleFOC |SimpleFOC学习笔记汇总
  • OpenArk64:Windows 系统分析与逆向工程工具详解
  • 数据储存与管理【大数据导论】
  • 《从零到一:搭建高效体育直播网站的全流程技术指南》
  • 松散比较(PHP)(小迪网络安全笔记~
  • 一文了解如何使用 DBeaver 管理 DolphinDB
  • 网络基础知识指南|1-20个
  • 01.09周四F34-Day50打卡
  • Linux简介和环境搭建
  • 在移动端开发图表,uniapp+echarts,需要特殊处理,使用renderjs
  • SpringBoot之LazyInitializationBeanFactoryPostProcessor类源码学习
  • United States of America三种表示
  • OpenCV基于均值漂移算法(pyrMeanShiftFiltering)的水彩画特效
  • 【C++】拷贝构造函数与运算符重载
  • 2024年开发语言热度排名