在编译Perl的DBD :: mysql时如何修复“未找到符号:_is_prefix”?

前端之家收集整理的这篇文章主要介绍了在编译Perl的DBD :: mysql时如何修复“未找到符号:_is_prefix”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先,我想构建 DBD::mysql包.这仍然失败,因为无法使用未找到符号的测试加载导致的任何内容:_is_prefix.所以我认为cpan可能有点老了.我知道这是一个随机的假设,但cpan确实告诉我安装最新的 Bundle::CPAN.

谁在Mac OS X 10.5上成功安装了DBD::mysqlBundle::CPAN?你能推荐一些我可以做的不同的事吗?

This is perl,v5.8.8 built for darwin-thread-multi-2level
(with 4 registered patches,see perl -V for more detail)
/usr/local/MysqL/bin/MysqL  Ver 14.14 Distrib 5.1.36,for apple-darwin9.5.0 (i386) using readline 5.1

以下是DBD::mysql的CPAN输出日志:

Writing Makefile for DBD::MysqL
cc -c  -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/MysqL/include -DDBD_MysqL_INSERT_ID_IS_GOOD -g  -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3   -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\"  "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE"   dbdimp.c
/usr/bin/perl -p -e "s/~DRIVER~/MysqL/g" /Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI/Driver.xst > MysqL.xsi

Running Mkbootstrap for DBD::MysqL ()
chmod 644 MysqL.bs
/usr/bin/perl /System/Library/Perl/5.8.8/ExtUtils/xsubpp  -typemap /System/Library/Perl/5.8.8/ExtUtils/typemap  MysqL.xs > MysqL.xsc && mv MysqL.xsc MysqL.c
cp lib/DBD/MysqL.pm blib/lib/DBD/MysqL.pm
cp lib/DBD/MysqL/GetInfo.pm blib/lib/DBD/MysqL/GetInfo.pm
cp lib/DBD/MysqL/INSTALL.pod blib/lib/DBD/MysqL/INSTALL.pod
cp lib/Bundle/DBD/MysqL.pm blib/lib/Bundle/DBD/MysqL.pm
cp MysqL.bs blib/arch/auto/DBD/MysqL/MysqL.bs
chmod 644 blib/arch/auto/DBD/MysqL/MysqL.bs
Warning: duplicate function definition 'do' detected in MysqL.xs,line 225
Warning: duplicate function definition 'rows' detected in MysqL.xs,line 650
cc -c  -I/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/DBI -I/usr/local/MysqL/include -DDBD_MysqL_INSERT_ID_IS_GOOD -g  -arch ppc -arch i386 -g -pipe -fno-common -DPERL_DARWIN -no-cpp-precomp -fno-strict-aliasing -Wdeclaration-after-statement -I/usr/local/include -O3   -DVERSION=\"4.012\" -DXS_VERSION=\"4.012\"  "-I/System/Library/Perl/5.8.8/darwin-thread-multi-2level/CORE"   MysqL.c
dbdimp.c: In function 'MysqL_describe':
dbdimp.c:3309: warning: assignment from incompatible pointer type
dbdimp.c: In function 'MysqL_describe':
dbdimp.c:3309: warning: assignment from incompatible pointer type
rm -f blib/arch/auto/DBD/MysqL/MysqL.bundle
LD_RUN_PATH="/usr/local/MysqL/lib" /usr/bin/perl myld cc -mmacosx-version-min=10.5.7  -arch ppc -arch i386 -bundle -undefined dynamic_lookup -L/usr/local/lib dbdimp.o MysqL.o  -o blib/arch/auto/DBD/MysqL/MysqL.bundle    \
       -L/usr/local/MysqL/lib -lMysqLclient -lz -lm     \

chmod 755 blib/arch/auto/DBD/MysqL/MysqL.bundle
Manifying blib/man3/DBD::MysqL.3pm
Manifying blib/man3/DBD::MysqL::INSTALL.3pm
Manifying blib/man3/Bundle::DBD::MysqL.3pm
  CAPTTOFU/DBD-MysqL-4.012.tar.gz
  /usr/bin/make -j3 -j3 -- OK

Running make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0,'blib/lib','blib/arch')" t/*.t
t/00base.t .................. 1/6 Bailout called.  Further testing stopped:  Unable to load DBD::MysqL

#   Failed test 'use DBD::MysqL;'
#   at t/00base.t line 21.
#     Tried to use 'DBD::MysqL'.
#     Error:  Can't load '/Users/dlamblin/.cpan/build/DBD-MysqL-4.012-4n3pv8/blib/arch/auto/DBD/MysqL/MysqL.bundle' for module DBD::MysqL: dlopen(/Users/dlamblin/.cpan/build/DBD-MysqL-4.012-4n3pv8/blib/arch/auto/DBD/MysqL/MysqL.bundle,2): Symbol not found: _is_prefix
#   Referenced from: /Users/dlamblin/.cpan/build/DBD-MysqL-4.012-4n3pv8/blib/arch/auto/DBD/MysqL/MysqL.bundle
#   Expected in: dynamic lookup
#  at (eval 7) line 2
# Compilation Failed in require at (eval 7) line 2.
# BEGIN Failed--compilation aborted at (eval 7) line 2.
Failed--Further testing stopped: Unable to load DBD::MysqL
make: *** [test_dynamic] Error 255
  CAPTTOFU/DBD-MysqL-4.012.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module,try:
  reports CAPTTOFU/DBD-MysqL-4.012.tar.gz
Running make install
  make test had returned bad status,won't install without force
Failed during this command:
 CAPTTOFU/DBD-MysqL-4.012.tar.gz              : make_test NO

解决方法

好的,如果你收到这些错误,我现在知道以下内容

>用于Mac OS X x86_64的MysqL 5.1与DBD :: MysqL(尚未)兼容.安装32位x86版本,然后重试.你会成功的.我希望perl Makefile.pl能在横幅中告诉你.
> Bundle :: CPAN有问题,因为我没有以root身份安装.为什么这会使它报告循环引用而不是安装权限问题,我永远不会理解.

如果这成为过时的信息,请添加评论.

猜你在找的Perl相关文章