You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Ventura后编译bitcoin-iterate时-lcrypto库链接失败求助

解决Ventura下编译bitcoin-iterate时-lcrypto找不到的问题

问题根源

多版本OpenSSL共存确实是核心诱因:

  • Ventura系统默认自带的是LibreSSL,而非你通过Homebrew安装的OpenSSL 3.0.7/1.1版本
  • Homebrew安装的OpenSSL不会自动加入编译器的默认搜索路径,链接器找不到libcrypto库就会抛出错误
  • 多版本OpenSSL存在时,编译器无法自行判断应该选用哪个版本的库文件

解决方案

方案1:临时设置环境变量指定OpenSSL路径

以你要使用的OpenSSL 3.0.7为例,先执行以下命令配置环境变量,再运行make:

# Apple Silicon芯片(Homebrew路径为/opt/homebrew)
export CFLAGS="-I$(brew --prefix openssl@3)/include"
export LDFLAGS="-L$(brew --prefix openssl@3)/lib"
export LD_LIBRARY_PATH="$(brew --prefix openssl@3)/lib:$LD_LIBRARY_PATH"

# Intel芯片(Homebrew路径为/usr/local)
# export CFLAGS="-I/usr/local/opt/openssl@3/include"
# export LDFLAGS="-L/usr/local/opt/openssl@3/lib"
# export LD_LIBRARY_PATH="/usr/local/opt/openssl@3/lib:$LD_LIBRARY_PATH"

make

方案2:直接在make命令行传递参数

无需设置环境变量,直接在make执行时指定编译和链接参数:

# Apple Silicon芯片
make CFLAGS="-I$(brew --prefix openssl@3)/include" LDFLAGS="-L$(brew --prefix openssl@3)/lib"

# Intel芯片
# make CFLAGS="-I/usr/local/opt/openssl@3/include" LDFLAGS="-L/usr/local/opt/openssl@3/lib"

方案3:修改Makefile强制指定库路径

如果上述方法无效,说明Makefile未适配非系统默认的OpenSSL路径,直接修改Makefile:

  1. 找到包含LIBS或LDFLAGS的配置行
  2. 添加OpenSSL的头文件和库路径,示例如下:
    # Apple Silicon芯片
    CFLAGS += -I/opt/homebrew/opt/openssl@3/include
    LDFLAGS += -L/opt/homebrew/opt/openssl@3/lib
    

方案4:临时关闭LTO优化尝试

错误命令中使用了-flto(链接时优化),部分场景下该参数会干扰库的查找逻辑。你可以修改Makefile里的CFLAGS和LDFLAGS,去掉-flto参数后重新编译。

内容的提问来源于stack exchange,提问作者Marco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 12:55:22