繁体   English   中英

在 osx 10.11 上安装 DBD::MySQL 时出错 - 无法链接/包含 C 库 '',正在中止

[英]error installing DBD::MySQL on osx 10.11 - Can't link/include C library '', aborting

通过自制软件更新 perl 后,我破坏了通过cpanm安装的cpanm dbd::mysql安装结果:

I will use the following settings for compiling and testing:

    cflags        (mysql_config) = -I/usr/local/Cellar/mysql-connector-
    c/6.1.9/include
    embedded      (guessed     ) =
    ldflags       (guessed     ) =
    libs          (mysql_config) = -L/usr/local/Cellar/mysql-connector-
    c/6.1.9/lib -l
    mysql_config  (guessed     ) = mysql_config
    nocatchstderr (default     ) = 0
    nofoundrows   (default     ) = 0
    nossl         (default     ) = 0
    testdb        (default     ) = test
    testhost      (default     ) =
    testpassword  (default     ) =
    testport      (default     ) =
    testsocket    (default     ) =
    testuser      (guessed     ) = root

To change these settings, see 'perl Makefile.PL --help' and 'perldoc DBD::mysql::INSTALL'.

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

有谁知道如何解决? 我试过删除mysql-connector-c并通过自制软件安装mysql 然后投诉是Can't link/include C library 'ssl', 'crypto', aborting 我确实安装了openssl

perl 版本:

This is perl 5, version 24, subversion 1 (v5.24.1) built for
darwin-thread-multi-2level

这是一个老问题,但我刚刚在安装 DBD::mysql 时遇到了这个问题,我看到其他人也仍然有这个问题。 这是对我有用的复杂解决方案。

我首先运行(MacOX Mojave 10.14.1):

  • brew install mysql
  • cpanm install DBD::mysql
  • 这失败了。

这给了我错误消息“无法链接/包含 C 库‘ssl’、‘crypto’,正在中止”。 根据此线程和元 cpan 上的 DBD::mysql 安装说明,发生此错误是因为 DBD::mysql 包需要(?)“mysql-connector-c”而不是“mysql”。 好的,我通过以下方式解决了这个问题:

  • brew unlink mysql
  • brew install mysql-connector-c
  • cpanm install DBD::mysql
  • cpan 安装仍然失败,但出现新错误!

“修复”了这个问题,因为它给我带来了不同的错误消息。 我现在收到消息:“无法链接/包含 C 库'',正在中止”。 进步! 现在我收到了这个答案的错误。 我通过以下方式修复了这个错误:

  • 验证我的问题确实来自缺少链接标志。
  • 运行mysql_config
  • 这将返回类似:--libs [L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -l]
  • 请注意,末尾的“-l”后面没有任何内容,这是不正确的。
  • 编辑/usr/local/Cellar/mysql-connector-c/6.1.11/bin/mysql_config line #114
  • libs="$libs -l"更改为libs="$libs -lmysqlclient"
  • 验证它是否有效: mysql_config
  • 这应该返回如下内容:--libs [L/usr/local/Cellar/mysql-connector-c/6.1.11/lib -lmysqlclient]
  • 再次执行cpanm install DBD::mysql
  • 这次成功了!!!
  • 小心:我们不会为 SSL 连接安装 lib,这可能会在以后导致神秘的问题

这为我成功安装了 DBD::mysql。 我确实认为我将不得不返回并添加更多链接标志。

  1. 显示mysql_config的路径which mysql_config

    例如:/usr/local/opt/mysql@5.7/bin/mysql_config

  2. 显示 openssl lib 路径, which openssl . 注意:如果它是/usr/local/bin/openssl的符号,则可以键入ls -ld /usr/local/bin/openssl以显示真实路径

    例如:如果它是/usr/local/openssl/bin/openssl ,那么你可以插入-L/usr/local/openssl/lib/来搜索cryptossl

  3. 编辑mysql_config文件并插入 openssl lib 的路径(第 114 行)

    例如: libs=$libs -L/usr/local/opt/openssl/lib

    插入openssl库的路径 4.输入cpan install DBD::mysql ,成功。

我按照@Benny K 回答中给出的链接进行操作,因为他给出的命令对我不起作用,只需执行以下命令即可

 cpanm DBD::mysql --configure-args="--libs='-L/usr/local/opt/openssl/lib -lssl -lcrypto -L/usr/local/lib -lmysqlclient'"

我遇到了同样的错误,在四处寻找时,我将 -I/usr/local/mysql/include 添加到 perl makefile.pl 命令中。 这不起作用,但我再次尝试了,然后它想出了一个我必须阅读并遵守的 Xcode 协议表。 长话短说,我将较旧的 macbook pro 升级到 el capian,然后上周不得不安装 Xcode 6.3。 我忘记了较新的 Xcode。 无论如何,一旦我同意使用 Xcode,最终结果是成功安装

再次偶然发现了这一点,在没有任何答案奏效之后,这个问题帮了大忙:

PATH="$(brew --prefix mysql-client)/bin:$PATH"
export LIBRARY_PATH=$(brew --prefix openssl)/lib:$LIBRARY_PATH
cpanm DBD::mysql

归功于https://blog.mitsuto.com/macos-mojave-perl-dbd-mysql

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM