如何让MacOS Monterey的dlopen识别/opt/local/lib中的dylib文件?
解决macOS下Nim编译依赖libsass找不到动态库的问题
可行解决方案
1. 编译时直接指定库路径
编译Nim代码时,通过--passL参数向链接器传递库的搜索路径,命令如下:
nim compile --passL="-L/opt/local/lib" 你的代码文件名.nim
如果使用nimble管理项目,可在项目的.nimble文件中添加以下配置:
passL "-L/opt/local/lib"
2. 给库文件创建软链接到系统可搜索目录
由于macOS的SIP限制了DYLD_LIBRARY_PATH的生效范围,可将libsass.dylib软链接到不受SIP严格限制的/usr/local/lib目录:
# 先确保/usr/local/lib存在 sudo mkdir -p /usr/local/lib # 创建软链接 sudo ln -s /opt/local/lib/libsass.dylib /usr/local/lib/libsass.dylib
3. 临时禁用SIP(不推荐)
仅在上述方法均无效时考虑此方案:
- 重启Mac,按住
Command+R进入恢复模式 - 打开终端,执行命令禁用SIP:
csrutil disable - 重启系统后,设置环境变量:
export DYLD_LIBRARY_PATH=/opt/local/lib:$DYLD_LIBRARY_PATH - 编译完成后,务必重启进入恢复模式,执行以下命令重新启用SIP:
csrutil enable
内容的提问来源于stack exchange,提问作者Emre
相关产品推荐
相关产品推荐

