在 Mac Big Sur 上安装 DBD::mysql 时出现错误“无法链接/包含 C 库‘zstd’” - MacPorts MySQL

问题描述

我在 Big Sur 上使用 MysqL8 - 它与 MacPorts 一起安装。我在通过 CPAN 和手动安装 DBD::MysqL 时遇到了问题。我得到的错误信息是:

Checking if libs are available for compiling... 
Can't link/include C library 'zstd',aborting.

一些(可能完全不相关的)事实可能会有所帮助 - 我在这里摸索:

  • 我正在使用 /usr/bin/perl 虽然 MacPorts Perl 显示为 “积极的”。 @INC 在 /opt 中不包含任何内容
  • 我在 /opt/local/lib 中找到以下内容
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)并进行手动安装来解决它:

https://perlbrew.pl/

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...