### 2.13.3 使用 Perl DBI/DBD 接口的问题 [](<>)[](<>) 如果 Perl 报告它找不到`../mysql/mysql.so`模块,问题可能是 Perl 找不到`libmysqlclient.so`共享库。您应该能够通过以下方法之一解决此问题: - 复制`libmysqlclient.so`到您的其他共享库所在的目录(可能`/usr/lib`要么`/lib`)。 - 修改`-L`用于编译的选项`DBD::mysql`反映实际位置`libmysqlclient.so`. - 在 Linux 上,您可以添加目录的路径名`libmysqlclient.so`位于`/etc/ld.so.conf`文件。 - [](<>) [](<>) [](<>) [](<>)添加所在目录的路径名`libmysqlclient.so`位于`LD_RUN_PATH`环境变量。一些系统使用`LD_LIBRARY_PATH`反而。 请注意,您可能还需要修改`-L`如果存在链接器找不到其他库的选项。例如,如果链接器找不到`库`因为它在`/lib`并且链接命令指定`-L/usr/lib`, 改变`-L`选项`-L/库`或添加`-L/库`到现有的链接命令。 如果您收到以下错误`DBD::mysql`,您可能正在使用**海合会**(或使用编译的旧二进制文件**海合会**): ``` /usr/bin/perl: can't resolve symbol '__moddi3' /usr/bin/perl: can't resolve symbol '__divdi3' ``` 添加`-L/usr/lib/gcc-lib/... -lgcc`到链接命令时`mysql.so`库被构建(检查输出**制作**为了`mysql.so`当你编译 Perl 客户端时)。这`-L`选项应指定目录的路径名,其中`libgcc.a`位于您的系统上。 这个问题的另一个原因可能是 Perl 和 MySQL 没有同时编译**海合会**.在这种情况下,您可以通过编译来解决不匹配问题**海合会**.