MacOS Big Sur安装mysql2出现library not found错误怎么解决
macOS Big Sur 安装mysql2 gem依赖缺失问题解决方案
问题原因
你之前的执行命令每次仅通过--with-opt-dir指定单个依赖路径,会覆盖上一次的配置,导致只能识别单个依赖库,另一个库始终找不到路径,所以会交替报library not found for -lzstd和library not found for -lssl错误。
解决方案
--with-opt-dir参数支持传入多个路径,路径之间用冒号分隔,即可同时指定多个依赖库的查找路径。
前置操作
先确认已通过Homebrew安装所需依赖:
brew install openssl zstd
方案1:直接传入合并路径安装
执行以下命令即可完成安装:
gem install mysql2 -- --with-opt-dir="$(brew --prefix openssl):$(brew --prefix zstd)"
方案2:通过环境变量指定路径(方案1无效时使用)
先导出编译所需的头文件、库文件路径,再执行安装:
export LDFLAGS="-L$(brew --prefix openssl)/lib -L$(brew --prefix zstd)/lib" export CPPFLAGS="-I$(brew --prefix openssl)/include -I$(brew --prefix zstd)/include" gem install mysql2
Bundler用户配置
如果项目使用Bundler管理依赖,可执行以下命令配置mysql2的编译参数,避免后续每次bundle install都需要手动处理:
bundle config set --local build.mysql2 --with-opt-dir="$(brew --prefix openssl):$(brew --prefix zstd)" # 配置完成后执行正常安装即可 bundle install
内容的提问来源于stack exchange,提问作者Javier Gonzales
相关产品推荐
相关产品推荐

