请问怎样perl程序文件编译成可执行文件
3个回答
展开全部
于是就有此问。答案:在Linux下可以使用PerlCC(本身就随着PERL有的),他是把PERL转换成C语言,然后编译它。
如果在Windows下可以使用perl2exe(找破解版),建议使用PERLAPP(也就是ActivePERL的PDK套件),功能非常强大,不过是商业软件,也可以去找一个破解版本(最新版是5.3XXX).
PDK可以把PERL脚本编译成常规应用程序/WINDOWS SERVICE/工具栏程序等等.功能非常强大.也就是说你利用PERL编写的脚本,在Windows上面做一服务程序,完全没有问题.
如果在Windows下可以使用perl2exe(找破解版),建议使用PERLAPP(也就是ActivePERL的PDK套件),功能非常强大,不过是商业软件,也可以去找一个破解版本(最新版是5.3XXX).
PDK可以把PERL脚本编译成常规应用程序/WINDOWS SERVICE/工具栏程序等等.功能非常强大.也就是说你利用PERL编写的脚本,在Windows上面做一服务程序,完全没有问题.
展开全部
可以使用PERL2EXE,这是一个软件,把PERL程序转换为EXE,可以独立执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一般创建的exe的方法如下:
1.使用 perl2exe 工具(需要购买)
2.使用 ActiveState 公司的 Perl Dev Kit (需要购买)
那么有没有免费的方案呢?
今天发现的方法就可以完全满足大家。
首先我们安装需要的模块,这里以 windows 平台下的 ActivePerl 为例
(Windows 下的最通用发行版本)。
打开 ppm,安装一下模块:
Parse-Binary, Win32-Exe, Module-ScanDeps, PAR-Dist, PAR
安装PAR比较麻烦,这里是如何安装,以及如何解决碰到的问题:
第一步:ppm install par
这个比较简单,当然如果幸运的话,你应该可以直接使用par了,但是我没有那么幸运,因为安装之后找不到pp.bat,实际上这是ActivePerl的问题,没办法只能往下继续了。
第二步:重新安装par-packer
不过之前要更新一个模块File-Temp,我原来的版本是0.12,太低,换成0.18的
ppm install http://www.bribes.org/perl/ppm/File-Temp.ppd
然后安装par-packer 0.975
ppm install http://www.bribes.org/perl/ppm/PAR-Packer.ppd
第三步:这时已经可以使用pp.bat了,但是你会发现pp不能生成exe文件,总是报
erl lib version (v5.8.8) doesn't match executable version (v5.8.6)的错误,
原因在于二进制不兼容,需要继续修改。
第四步:下载5.8.8的par-packer
http://www.perl.com/CPAN/authors/id/S/SM/SMUELLER/PAR-Packer-0.975-MSWin32-x86-multi-thread-5.8.8.par
第五步:从par文件中提取Static.pm和Dynamic.pm两个文件(par可以用zip打开),用这两个文件替换C:/Perl/site/lib/PAR/StrippedPARL目录下的同名文件。
第六步:打开C:/Perl/site/lib/PAR/StrippedPARL目录下的base.pm,将第71行修改为
my @libs = (map {"-I/"$_/""} @INC);
第七步:执行pp -o t.exe t.pl,一切都OK了。
(par生成的可执行文件比较大,这是个缺点)
我在按照以上步骤安装PAR后,发现还是不能生成exe文件,错误信息如下:
The procedure entry point perl_sv_2iv_flags could not be located in the dynamic link library perl58.dll
这个问题应该是ActiveState的版本问题,我的komodo版本是3.5.2,google了一下,发现有解决方案:
For ActiveState build 822 you can download the PAR dist from
http://backpan.perl.org/authors/id/S/SM/SMUELLER/PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par
and install it with:
perl -MPAR::Dist -e"install_par( 'PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par' )
也就是说,上面的第四步,应该到perl -MPAR::Dist -e"install_par(
'PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par' )
去下载PP。继续第五步。跳过第六步。直接在命令行中运行pp命令即可。不过需要注意的是,命令行中需要使用pp.bat的完整路径,否则会出现pp
is not recongnized as an internal or external command的错误。
1.使用 perl2exe 工具(需要购买)
2.使用 ActiveState 公司的 Perl Dev Kit (需要购买)
那么有没有免费的方案呢?
今天发现的方法就可以完全满足大家。
首先我们安装需要的模块,这里以 windows 平台下的 ActivePerl 为例
(Windows 下的最通用发行版本)。
打开 ppm,安装一下模块:
Parse-Binary, Win32-Exe, Module-ScanDeps, PAR-Dist, PAR
安装PAR比较麻烦,这里是如何安装,以及如何解决碰到的问题:
第一步:ppm install par
这个比较简单,当然如果幸运的话,你应该可以直接使用par了,但是我没有那么幸运,因为安装之后找不到pp.bat,实际上这是ActivePerl的问题,没办法只能往下继续了。
第二步:重新安装par-packer
不过之前要更新一个模块File-Temp,我原来的版本是0.12,太低,换成0.18的
ppm install http://www.bribes.org/perl/ppm/File-Temp.ppd
然后安装par-packer 0.975
ppm install http://www.bribes.org/perl/ppm/PAR-Packer.ppd
第三步:这时已经可以使用pp.bat了,但是你会发现pp不能生成exe文件,总是报
erl lib version (v5.8.8) doesn't match executable version (v5.8.6)的错误,
原因在于二进制不兼容,需要继续修改。
第四步:下载5.8.8的par-packer
http://www.perl.com/CPAN/authors/id/S/SM/SMUELLER/PAR-Packer-0.975-MSWin32-x86-multi-thread-5.8.8.par
第五步:从par文件中提取Static.pm和Dynamic.pm两个文件(par可以用zip打开),用这两个文件替换C:/Perl/site/lib/PAR/StrippedPARL目录下的同名文件。
第六步:打开C:/Perl/site/lib/PAR/StrippedPARL目录下的base.pm,将第71行修改为
my @libs = (map {"-I/"$_/""} @INC);
第七步:执行pp -o t.exe t.pl,一切都OK了。
(par生成的可执行文件比较大,这是个缺点)
我在按照以上步骤安装PAR后,发现还是不能生成exe文件,错误信息如下:
The procedure entry point perl_sv_2iv_flags could not be located in the dynamic link library perl58.dll
这个问题应该是ActiveState的版本问题,我的komodo版本是3.5.2,google了一下,发现有解决方案:
For ActiveState build 822 you can download the PAR dist from
http://backpan.perl.org/authors/id/S/SM/SMUELLER/PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par
and install it with:
perl -MPAR::Dist -e"install_par( 'PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par' )
也就是说,上面的第四步,应该到perl -MPAR::Dist -e"install_par(
'PAR-Packer-0.976-MSWin32-x86-multi-thread-5.8.8.par' )
去下载PP。继续第五步。跳过第六步。直接在命令行中运行pp命令即可。不过需要注意的是,命令行中需要使用pp.bat的完整路径,否则会出现pp
is not recongnized as an internal or external command的错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询