Strawberry Perl 5.38安装Tk-804.036遇编译及运行异常求助
Strawberry Perl 5.38.0 + Tk-804.036 编译与运行问题及兼容版本查询
环境与初始问题
运行Strawberry Perl 5.38.0(MSWin32-x64-multi-thread版本),从CPAN下载最新版Tk-804.036后,执行perl Makefile.PL时出现大量编译错误。
已尝试的修改操作
参考@HaraldJoerg的帖子《Tk build fails (Perl 5.36 sp536 20230420)#98》,对代码做了以下修改:
- 全局替换项目中所有.c和.h文件(如
pTk\mTk\xlib\X11\X.h、pTk\tkBind.c等)里的ControlMask为ControlMask_BUGBUG; - 在所有包含
SVt_RV的文件(config/svtrv.c、Event\pTkCallback.c)中,将case SVt_IV:替换为:
#ifdef HAS_REAL_SVT_RV case SVt_RV: #endif
- 在
config/pmop.c文件中,将op_pmdynflags改为op_pmflags,并删除包含op_pmpermflags的行。
修改后的状态
- 执行
make realclean和perl Makefile.PL可完成编译,仅config/Hstrdup.c文件存在“exit函数隐式声明”的轻微警告; make test仍抛出大量指针转错误尺寸整数等警告,使用make -i test和make -i install强制完成安装后,运行基础Tk示例程序:
use Tk; my $mw = MainWindow->new; $mw->title("Hello World"); $mw->Button( -text => "Done", -command => sub { exit} )->pack; MainLoop;
程序无任何反应,直接返回命令行。
待解决问题
- 作为开源软件修改新手,不知道如何提交修复编译错误的代码;
- 想了解有哪些兼容的Strawberry Perl与Tk版本组合。
内容的提问来源于stack exchange,提问作者Orville Weyrich
相关产品推荐
相关产品推荐

