首页 > 解决方案 > 相同版本但具有不同配置选项的两个 perls 之间的兼容性?

问题描述

例如,如果我有两个相同版本的 Perl 配置,

这两个版本能否共享相同的corelist 模块?或者我也需要单独打包一个。这种方法是否存在已知的 XS 代码编译异常?是否有可能针对线程 Perl 构建的任何东西都可以与非线程 Perl 一起使用?假设版本相同。

标签: multithreadingperl

解决方案


一般来说,XS 模块在不同的构建选项之间(以及不同的 perl 版本之间)是不兼容的。因为如果不出意外,不同的构建选项可能会导致结构的大小和对齐方式在 perl 核心和编译模块之间发生变化,如果两者都可以访问相同的结构(例如 perl 标量变量),则会导致崩溃。同样在包含线程构建的 MULTIPLICITY 构建中,大多数 perl 核心 API 函数都添加了一个额外的参数(指向当前解释器的指针),并且在没有该指针的情况下调用该函数,反之亦然,将再次导致崩溃。


推荐阅读