macOS Ventura下bundle install mysql2遇-lzlib库未找到错误求助
解决bundle install安装mysql2 gem时ld: library not found for -lzlib的问题
问题场景
在Ventura(13.3.1)系统下,执行bundle install安装mysql2 0.5.5 gem时,编译原生扩展的链接阶段报错:ld: library not found for -lzlib。已尝试安装zlib并配置环境变量、重新安装Xcode命令行工具等方法,问题未解决。
本地环境:
- OS: Ventura(13.3.1)
- Xcode: 14.3
- ruby: 3.1.4
- rails: 6.1
- mysql2: 0.5.5
可行解决方案
1. 直接给mysql2指定编译参数(优先尝试)
绕过环境变量的潜在问题,直接在bundle配置中指定mysql2编译所需的zlib和openssl路径:
# 配置mysql2的编译参数 bundle config set --local build.mysql2 "--with-zlib-dir=$(brew --prefix zlib) --with-opt-dir=$(brew --prefix openssl@3)" # 重新执行bundle install bundle install
如果后续需要重置该配置,执行:
bundle config unset --local build.mysql2
2. 重新安装mysql并关联brew的zlib
若mysql本身未正确链接zlib库,可尝试重装mysql:
brew uninstall mysql brew install mysql
若问题仍存在,强制重装确保依赖正确:
brew reinstall mysql --force
3. 切换Xcode开发者目录
部分情况下,单独的命令行工具与Xcode自带的开发者工具可能存在库路径冲突,切换到Xcode自带的目录:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer xcodebuild -runFirstLaunch
执行完成后再重新尝试bundle install。
4. 指定架构编译(适用于M系列芯片Mac)
如果是arm64架构的M系列Mac,需明确指定编译架构:
bundle config set --local build.mysql2 "--with-zlib-dir=$(brew --prefix zlib) --with-opt-dir=$(brew --prefix openssl@3) --arch arm64" bundle install
内容的提问来源于stack exchange,提问作者qounme
相关产品推荐
相关产品推荐

