6

Hi I am trying to install mysql2 gem in MacBook M1 Big Sur, I am getting the the following errors.

ld: library not found for -lzstd
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

Full Error

Using mysql_config at /opt/homebrew/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... no
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /opt/homebrew/Cellar/mysql/8.0.26/lib
-----
creating Makefile

current directory: /Users/santosh/.rvm/gems/ruby-2.6.3/gems/mysql2-0.5.3/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/santosh/.rvm/gems/ruby-2.6.3/gems/mysql2-0.5.3/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lzstd
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/santosh/.rvm/gems/ruby-2.6.3/gems/mysql2-0.5.3 for inspection.
Results logged to /Users/santosh/.rvm/gems/ruby-2.6.3/extensions/-darwin-20/2.6.0/mysql2-0.5.3/gem_make.out

An error occurred while installing mysql2 (0.5.3), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.3' --source 'https://rubygems.org/'` succeeds before bundling.

I tried to install with different version of Ruby, nothing went well.

Santosh Aryal
  • 1,276
  • 1
  • 18
  • 41
  • https://stackoverflow.com/questions/67840691/ld-library-not-found-for-lzstd-while-bundle-install-for-mysql2-gem-ruby-on-mac – benjessop Sep 12 '21 at 09:38

2 Answers2

18

I had this problem too and I think what finally solved it was running:

gem install mysql2 -v '0.5.3' -- --with-opt-dir=$(brew --prefix openssl) --with-ldflags=-L/opt/homebrew/Cellar/zstd/1.5.0/lib

However, for what it's worth, I'd previously installed without success but might have also been needed:

  • homebrew, and brew doctor said it was ready to brew.
  • Xcode tools xcode-select --install
  • mysql brew install mysql (and I could make a local connection)
  • openssl brew install openssl && brew link openssl --force
  • rbenv and rbenv rehash
  • cmake brew install cmake
Dharman
  • 30,962
  • 25
  • 85
  • 135
Ingytron
  • 381
  • 5
  • 13
  • 2
    Just to consider you have to check the zstd version in my case it was 1.5.1 so the command for me was ``gem install mysql2 -v '0.5.3' -- --with-opt-dir=$(brew --prefix openssl) --with-ldflags=-L/opt/homebrew/Cellar/zstd/1.5.1/lib`` – ravelinx Jan 08 '22 at 20:36
  • Phew, you did it! That was way too hard lol. I think the 0.5.3 version is important too for some reason. – Kevin Jan 13 '22 at 04:53
  • This command alone fixed it in my case (MacOS Monterrey)!, different zstd version but worked anyway. Thank you sir! – JGutierrezC Jan 24 '22 at 05:47
  • Unfortunately, this did not work for me on M1 with BigSur. My specific problem was resolved by this https://stackoverflow.com/a/68181856/5804379 – Vikram Bahl Feb 05 '22 at 10:43
11

Apple Macbook air M1. Monterey. You need to install MySQL and openssl using brew .

This works for me.

gem install mysql2 -- --with-opt-dir=/opt/homebrew/opt/openssl@3 --with-mysql-dir=/opt/homebrew/opt/mysql
Jin Lim
  • 1,759
  • 20
  • 24