2

我似乎在尝试在 Windows XP 上使用Strawberry Perl 5.10.1 从CPAN安装签名模块时遇到一些问题。

在链接过程中出现一些“未定义的引用”错误。我猜我的B::Hooks::Parser模块有问题,但是重新安装那个模块并没有解决我的问题。

这是输出:

cpan shell -- CPAN 探索和模块安装 (v1.9452) Enter
'h' 寻求帮助。

cpan> install signatures 数据库于 2009 年 11 月 25 日星期三 20:22:23 GMT 生成

为模块“签名”运行安装
为 F/FL/FLORA/signatures-0.06.tar.gz 运行 make
C:\strawberry\cpan\sources\authors\id\F\FL\FLORA\signatures-0.06.tar.gz 的校验和 ok 扫描缓存 C:\strawberry\cpan\build 的大小
..................................................... ..........................完毕

  CPAN.pm:将构建 F/FL/FLORA/signatures-0.06.tar.gz

无法从 lib/signatures.pm 确定 perl 版本信息
检查您的套件是否完整...
看起来不错
为签名编写 Makefile cp lib/signatures.pm blib\lib/signatures.pm
C:\草莓\perl\bin\perl.exe "-Iinc" C:\草莓\perl\lib\ExtUtils\xsubpp
-typemap C:\strawberry\perl\lib\ExtUtils \typemap signatures.xs > signatures.xsc &&
C:\strawberry\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "mv" --
签名.xsc 签名.c gcc -c
-IC:\strawberry\perl\site\lib\B\Hooks\OP\Check\Install
-IC:\strawberry\perl\site\lib\B\Hooks\Parser\Install
-IC:\strawberry\perl\site\lib\B\Hooks\OP\PPAddr\Install
-s -O2 -DWIN32 -DHAVE_DES_FCRYPT -DUSE_SITECUSTOMIZE -DPERL_IMPL ICIT_CONTEXT -DPERL_IMPLICIT_SYS
-fno-strict-aliasing -DPERL_MSVCRT_READFIX -s -O2 -DVERSION=\"0.06\" -DXS_VER SION=\"0.06\"
“-IC:\草莓\perl\lib\CORE”签名.c
为签名运行 Mkbootstrap ()
C:\草莓\perl\bin\perl.exe "-Iinc" -MExtUtils::Command -e "chmod"
-- 644 个签名.bs C:\strawberry\perl\bin\perl.exe
“-Iinc”-MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"签名\",
'DLBASE' => '签名', 'DL_FUNCS'
=> { }, 'FUNCLIST' => [], 'IMPORTS' => { }, 'DL_VARS' => []);" dlltool --def signatures.def --output-exp dll.exp g++ -o
blib\arch\auto\signatures\signatures.dll
-Wl,--base-file -Wl,dll.base -mdll -s -L"C:\strawberry\perl\lib\CORE" -L "C:\strawberry\c\lib" 签名.o
-Wl,--image-base,0x121d0000 C:\strawberry\perl\lib\CORE\libperl510.a
C:\草莓\perl\site\lib\auto\B\Hooks\OP\Check\Check.a
C:\strawberry\perl\site\lib\auto\B\Hooks\Parser\Parser.a
C:\草莓\perl\site\lib\auto\B\Hooks\OP\PPAddr\PPAddr.a
C:\草莓\c\lib\libmoldname.a
C:\草莓\c\lib\libkernel32.a
C:\草莓 y\c\lib\libuser32.a
C:\草莓\c\lib\libgdi32.a
C:\草莓\c\lib\libwinspool.a
C:\草莓\c\lib\libcomdlg32.a
C:\草莓\c\lib\libadvapi32.a
C:\草莓\c\lib\libshel​​l32.a
C:\草莓\c\lib\libole32.a
C:\草莓\c\lib\lib oleaut32.a
C:\草莓\c\lib\libnetapi32.a
C:\草莓\c\lib\libuuid.a
C:\草莓\c\lib\libws2_32.a
C:\草莓\c\lib\libmpr.a
C:\草莓\c\lib\libwinmm.a
C:\草莓\c\lib\libversion.a
C:\草莓\c\lib\libodbc32.a
C:\草莓\c\lib\libodbccp32.a
dll.exp
signatures.o:signatures.c:(.text+0x23c):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x2b1):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x34b):undefined reference to `hook_toke_scan_word'
signatures.o:signatures.c:(.text+0x4b9):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x4e2):undefined reference to `hook_toke_scan_str'
signatures.o:signatures.c:(.text+0x4f5):undefined reference to `hook_parser_get_lex_stuff'
signatures.o:signatures.c:(.text+0x508):undefined reference to `hook_parser_clear_lex_stuff'
signatures.o:signatures.c:(.text+0x696):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x6cd):undefined reference to `hook_parser_get_linestr'
signatures.o:signatures.c:(.text+0x8f2):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x966):undefined reference to `hook_toke_scan_word'
signatures.o:signatures.c:(.text+0x9b3):undefined reference to `hook_toke_skipspace'
signatures.o:signatures.c:(.text+0x9f7):undefined reference to `hook_toke_scan_str'
signatures.o:signatures.c:(.text+0xa0a):undefined reference to `hook_parser_get_lex_stuff'
signatures.o:signatures.c:(.text+0xa1d):undefined reference to `hook_parser_clear_lex_stuff'
signatures.o:signatures.c:(.text+0xda4):undefined reference to `hook_parser_setup'
signatures.o:signatures.c:(.text+0xf89):undefined reference to `hook_parser_teardown' collect2: ld
返回 1 退出状态 dmake.EXE:
错误代码 129,同时制作 'blib\arch\auto\signatures\signatures.dll'
FLORA/signatures-0.06.tar.gz  
C:\strawberry\c\bin\dmake.EXE -- 不行
运行 make test 没有成功 make 就无法测试
运行 make install Make 已返回错误状态,安装似乎不可能
在此命令期间失败:FLORA/signatures-0.06.tar.gz          
: 不

我还在我的 Parser.a 库(在 perl/site/auto/B/Hooks/parser 中)上做了一个“nm”,但我没有找到任何包含“hook”的符号

有没有其他人遇到过这个问题?或者其他人是否成功安装了签名模块?

4

1 回答 1

1

我无法为您解决此问题,但您不是唯一遇到此问题的人。一位英勇的CPAN 测试人员报告了失败。我的狂想是,如果在 win32 上出现这种缺失的符号,那是因为该模块使用了非导出符号,这些符号在 Linux 上会暴露出来,因为那里的情况不那么严格。不过,我没有方便检查的来源。

无论哪种方式,这似乎都不是您系统上的问题。这是需要在源中修复的东西。其中之一。

于 2009-11-25T21:25:48.913 回答