perl脚本程序的编译和执行
大家都知道Perl是一个厉害的脚本语言,而且具有高级语言(如C)的强大能力和灵活性。Perl提供脚本语言(如sed和awk)的所有功能,还具有它们所不具备的很多功能。 简而言之,Perl象C一样强大,象awk、sed等脚本描述语言一样方便。
与所有脚本语言一样,Perl不需要编译器和链接器来运行代码,你要做的只是写出程序并告诉Perl来运行而已。
但是,当需要在没有perl的环境下(如嵌入式系统)想完成已完成编写perl程序的工作或者不想自己的perl程序被别人轻易阅读时,把perl程序编译成二进制可执行程序则是必须的一步。
把Perl脚本程序编成二进制可执行程序,目前通行的方法有三种,windows环境使用perl2exe工具但需购买许可证,Linux环境下可以免费使用perlcc或者pp工具。
下面举例说明使用perlcc和pp编译一个perl脚本程序并执行的过程和问题:
1、 bootinfo.pl文件部分内容
bootinfo.pl脚本程序读入android手机系统引导文件boot.img,然后输出该boot文件的基本信息

2、 ubuntu18.04环境下编译和执行bootinfo.pl
2.1 系统版本和perl版本信息


2.2 perlcc编译和二进制可执行文件bootinfo与共享库依赖关系

2.3 bootinfo执行结果:

2.4 pp编译和二进制可执行文件a.out与共享库依赖关系

2.5 a.out执行结果:

3、ubuntu16.04环境下拷贝执行程序
3.1 系统版本和perl版本信息


3.2拷贝的bootinfo程序与本机共享库依赖关系(perlcc编译的程序显示缺少libperl.so.5.26共享库)

3.3 执行bootinfo结果(缺少共享库执行失败)

3.4拷贝的a.out程序与本机共享库依赖关系(pp编译)

3.5 执行a.out结果

3、 perlcc与pp工具简单比较
a) 都可以生成二进制可执行程序;
b) perlcc编译生成的程序依赖perl共享库,只能本机编译本机执行;
c) pp编译生成的程序包含perl所有模块,可以拷贝到其他linux机器执行。