繁体   English   中英

perl:符号查找错误:/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so:未定义符号:mysql_init

[英]perl: symbol lookup error: /usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so: undefined symbol: mysql_init

我试图在程序中连接perl和mysql,但收到错误:perl:符号查找错误:/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so:未定义符号:mysql_init。 请指导。

我已经通过xampp安装了mysql,并在终端上使用xampp(/ opt ...命令)运行它。 Mysql从终端成功运行,但是我无法通过perl程序获取值。

我正在运行的Perl程序是:

#!/usr/bin/perl -w
use DBI;
$dbh = DBI->connect('dbi:mysql:first','root','shaifu')
or die "Connection Error: $DBI::errstr\n";
$sql = "select * from q";
$sth = $dbh->prepare($sql);
$sth->execute
or die "SQL Error: $DBI::errstr\n";
while (@row = $sth->fetchrow_array) {
print "@row\n";
} 

其中第一个是数据库,q是表。

DBI和DBD也分别作为perl -e'使用DBI'和perl -e'使用DBD :: mysql;'安装。 在终端上不返回任何内容。

请帮我解决问题。

好的,我将切断这种效率低下的信息查询过程,然后猜测是什么问题。

/usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so:未定义符号:mysql_init

这意味着无法找到由auto/DBD/mysql/mysql.so依赖的库之一,因此

ldd /usr/local/lib/perl/5.10.1/auto/DBD/mysql/mysql.so

将显示类似

...
libmysqlclient.so.18 => not found

这意味着加载器找不到libmysqlclient.so.18 这可能意味着

  1. 您没有此库,可以通过yum install community-mysql-libs修复此问题,例如在Fedora中。
  2. 您拥有它,但是它不在加载程序的搜索路径中,可以固定下来,例如在bash中, export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/path/to/libmysqlclient ,假设您的libmysqlclient.so位于/path/to/libmysqlclient
  3. 您也可以以根用户身份运行/sbin/ldconfig -n /path/to/libmysqlclient/path/to/libmysqlclient添加到系统的库搜索路径中,该目录包含libmysqlclient.so*

顺便说一句,如果可能的话,您应该始终通过Linux发行版的软件包管理器安装所需的任何软件,这可以避免几乎所有这些令人讨厌的依赖性问题。

暂无
暂无

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

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