perl-support-problems.md 1.6 KB
Newer Older
茶陵後's avatar
茶陵後 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
### 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 没有同时编译**海合会**.在这种情况下,您可以通过编译来解决不匹配问题**海合会**.