我在 Big Sur 上使用 mysql8 - 它是随 MacPorts 安装的。我在通过 CPAN 和手动安装 DBD::mysql 时遇到了问题。我收到的错误消息是:
Checking if libs are available for compiling...
Can't link/include C library 'zstd', aborting.
一些(可能完全不相关的)事实可能会有所帮助 - 我在这里在黑暗中摸索:
lrwxr-xr-x 1 root admin 19 Mar 6 12:30 libzstd.1.dylib -> libzstd.1.4.9.dylib
-rw-r--r-- 1 root admin 1112760 Mar 6 12:30 libzstd.a
lrwxr-xr-x 1 root admin 19 Mar 6 12:30 libzstd.dylib -> libzstd.1.4.9.dylib
mysql_config
时,我得到以下与库相关的输出:--libs [-L/opt/local/lib/mysql8/mysql -lmysqlclient -lz -lzstd -lssl -lcrypto -lresolv]
有什么提示吗?非常感谢!
我在最近的 M1 macbook 上安装 DBD:mysql 时遇到了同样的问题。 我通过安装 perlbrew(然后重新安装 perl)并进行手动安装解决了这个问题:
Perlbrew 为您提供安装和运行其他版本的 perl 的选项(OSX 使用的“供应商”版本除外)。
然后我下载了 DBD::mysql 包(https://metacpan.org/pod/DBD::mysql)。 然后我进行了手动安装,设置链接器标志以消除丢失的库。
perl Makefile.PL --libs="-L/opt/homebrew/Cellar/mysql/8.0.25_1/lib -lmysqlclient"
make
make test
make install
显而易见的答案是使用 MacPorts 安装 DBD::mysql,例如通过跑步
sudo port install p5.28-dbd-mysql +mysql8
我的解决方案是破解 mysql_config 并添加以下两行:
libs="$libs -L/opt/homebrew/Cellar/openssl@3/3.3.1/lib"
libs="$libs -L/opt/homebrew/Cellar/zstd/1.5.5/lib"
行前:
libs="$libs -lmysqlclient -lz -lzstd -lssl -lcrypto -lresolv"
后者解决了您的问题,第一行对于解决加密和 ssl 的类似问题是必要的。