perl 模块安装的 make 和 nmake 比较
Posted
技术标签:
【中文标题】perl 模块安装的 make 和 nmake 比较【英文标题】:Comparison of make and nmake for perl module installation 【发布时间】:2012-03-21 06:25:06 【问题描述】:与 Windows 和 linux/Unix 操作系统相比,模块安装有所不同。
在Win32中我们需要使用一个叫做nmake的程序,然后我们跟着
1. C:\> perl Makefile.PL
2. C:\> nmake
3. C:\> nmake test
4. C:\> nmake install
在 Linux 中我们遵循
1. $ perl Makefile.PL
2. $ make
3. $ make test
4. $ make install
两种操作系统的安装过程相同,唯一的区别在于使用的关键字 make 和 nmake。谁能告诉我字母 n
代表什么以及它在 windows 中的规范是什么。
【问题讨论】:
您使用 nmake、make 还是 dmake 取决于设置,即使在 Windows 中也是如此。 Strawberry Perl 的默认工具链包括 dmake。 nmake 通常包含在 ActiveState 发行版的工具链中,并且在 cygwin 下,我怀疑你会有“make”(尽管我没有使用 cygwin 来确认)。 ExtUtils::MakeMaker 通常会创建一个生成文件,该文件将适合常见的“make”实现的最小公分母,所以除非你真的很喜欢,否则你不必担心,除了担心用户是否真的有一些版本的make。 @DavidO,Cygwin 是一个 unix 仿真层,所以称它为 Windows 就像说 WINE 是 linux。cygwin
提供 GNU 工具,所以它使用 GNU 的 make
。
:) 我喜欢这个比喻,@ikegami。你是对的,当然。我只是为了避免平台实施方式的不确定性。
【参考方案1】:
来自Wikipedia,
Microsoft nmake,通常在 Windows 上可用。这是相当基本的 它仅提供其他两个版本的功能的子集 Make(BSD 和 GNU)。不要与微软的 nmake 混淆 来自 AT&T 和贝尔实验室的 Unix 的 nmake。
Microsoft nmake
详细 here 和 GNU make
详细 here
【讨论】:
【参考方案2】:其实在windows和linux上,模块安装通常是这样进行的:
cpan Module::Name
关于你的问题。
Perl 期望用于构建模块的编译器套件与用于构建 Perl 的编译器套件相同。
Windows 上有两个主要的工具链。有一个微软提供的,还有一个 GNU 的移植版。
微软提供的make工具名为nmake
。
GNU工具的MinGW端口提供的make工具命名为dmake
。
所以,
如果您的 Perl 是使用 MS 的工具构建的(例如 Windows 构建的 Perl by ActiveState),您需要使用nmake
。
如果您的 Perl 是使用 GNU 的工具构建的(例如,Strawberry 构建的 Perl),您需要使用 dmake
。
这让我们回到cpan Module::Name
。
cpan
会询问 Perl 使用了哪些工具来构建它,并使用这些工具。
通常。在 Windows 上并非如此。 cpan
在 Windows 上实际上要灵活得多。 cpan
将首先查看用于构建 Perl 的工具链。如果没有找到,cpan
为您安装 GNU 工具链并暂时欺骗perl
使其相信它是使用 GNU 的工具链构建的。
这意味着你运行cpan Module::Name
它应该可以在ActivePerl 上运行。 (还有ppm install Module::Name
,虽然我会先运行ppm
,不带任何参数来添加存储库(例如贿赂))
【讨论】:
以上是关于perl 模块安装的 make 和 nmake 比较的主要内容,如果未能解决你的问题,请参考以下文章