我应该如何分发预构建的perl模块,以及我构建perl的目的是什么版本?

我应该如何分发预构建的perl模块,以及我构建perl的目的是什么版本?,perl,swig,perl-module,Perl,Swig,Perl Module,这可能是一个多部分的问题。背景:我们有一个本机(c++)库,它是我们应用程序的一部分,我们已经设法使用SWIG为这个库生成一个perl包装器。现在,我们希望将此perl模块作为应用程序的一部分分发 我的第一个问题-我应该如何分发此模块?是否有一种标准的方式来打包预构建的perl模块?我知道ActiveState发行版有ppm,但我也需要为linux系统发行它。我甚至不确定需要分发哪些文件,但我猜至少是pm和so文件 我的下一个问题——看起来我可能需要为我想要支持的每个perl版本构建我的模块项目

这可能是一个多部分的问题。背景:我们有一个本机(c++)库,它是我们应用程序的一部分,我们已经设法使用SWIG为这个库生成一个perl包装器。现在,我们希望将此perl模块作为应用程序的一部分分发

我的第一个问题-我应该如何分发此模块?是否有一种标准的方式来打包预构建的perl模块?我知道ActiveState发行版有ppm,但我也需要为linux系统发行它。我甚至不确定需要分发哪些文件,但我猜至少是pm和so文件

我的下一个问题——看起来我可能需要为我想要支持的每个perl版本构建我的模块项目。我如何知道应该为哪些perl版本构建?是否有任何标准指南。。。或者更好的方法是,构建一个可以与多个版本的perl一起工作的包

如果我的问题没有意义,很抱歉-我对perl的编译模块方面还相当陌生


澄清:底层编译的源代码是专有的(封闭源代码),因此我不能只发送源代码和为包制作适当的工件。我希望我能,但这种情况不会发生。因此,我需要一个合理的方案来为我的模块打包预构建的二进制文件。

免责声明:我几乎没有创建易于安装的二进制软件包的经验。因此,我写这篇文章是为了让其他人更容易添加他们的建议

您应该以源代码的形式提供发行版,以便可以在每个系统上根据该系统的具体情况进行编译。我真的很喜欢这样

对于Windows上的ActiveState用户,根据是否支持
5.6
,您可能希望有四到六个PPM。为
5.6
5.8
5.10
分别打包32位和64位版本。使用
mingw
版本,您可以使用
ppm
来编译模块以保持二进制兼容性


另一个选项是使用和分发你的应用程序在PAR档案中。在这种情况下,虽然我没有尝试过,但它可能是有用的。不过,过去我已经成功地使用了PAR档案。

我关注DBD::Informix,Perl数据库驱动模块之一,它与DBI(Perl数据库接口)一起工作。用于连接IBM Informix Dynamic Server(IDS)的底层库是专有的,但DBD::Informix代码本身不是。我在CPAN上分发该代码,与任何其他Perl模块一样。人们可以下载该源代码,并且(如果他们的机器上安装了Informix ClientSDK,以及Perl和DBI等等),他们可以构建DBD::Informix来使用安装的Perl

我强烈建议您安排以源代码的形式提供Perl接口代码,即使它接口的库是专有的。这使得人们可以使用任何版本的Perl来安装代码,而无需处理不一致的问题


如果您仍然希望提供二进制支持,那么必须确定要支持哪些平台,并在每个这样的平台上使用标准版本的Perl构建模块。这会变得一团糟。您需要访问每台机器的一个实例。诚然,虚拟机使这变得更容易,但它仍然很复杂,平台和版本的数量只会增加。但是您仍然需要支持那些在机器上不使用标准版本的Perl的人——这就是为什么需要以源代码形式提供Perl包装器接口。

请看,这与您的标准基于CPAN的发行版相比有点不同——预编译的二进制发行版。也就是说,这是一个很好的资源。我没有想到……但是,是的,我认为我们可以在一个库(共享或静态)中分发我们的专有资料,并将SWIG生成的代码作为可构建的模块提供。