升级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:
- 找到包含
LIBS或LDFLAGS的配置行 - 添加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
相关产品推荐
相关产品推荐

