solaris perl print不输出_非常简单的编译和执行perl脚本程序

本文介绍了如何在Perl中编译脚本为二进制可执行程序,主要讨论了perlcc和pp工具的使用。通过实例展示了在Ubuntu 18.04和16.04上编译过程,以及编译后的程序在不同系统间的兼容性问题,特别是依赖库的问题。perlcc编译的程序需要目标系统有Perl库,而pp则能生成包含所有模块的独立程序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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文件的基本信息

06589b1c3e75b556f6a72c975a71ca6c.png

2、 ubuntu18.04环境下编译和执行bootinfo.pl

2.1 系统版本和perl版本信息

cabe83ebeb774561d911508a8bf26443.png
5164418d89fa63e8ddba7250d69422e6.png

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

b94c87e90b6ab56cd9a7fc8b0f618939.png

2.3 bootinfo执行结果:

5c58570b5a0da70a0f4d847d3fea48c8.png

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

aa4e6de16c9d1f8f1817ecf5747325e7.png

2.5 a.out执行结果:

ffe0d19d16a80d1361188d507b38fe86.png

3、ubuntu16.04环境下拷贝执行程序

3.1 系统版本和perl版本信息

86750672e5c4fd8aa72489c8f7e6708e.png
3320839790c5a0577795b35468299d46.png

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

6e9afd1b995841aff4269dcebd6aa31d.png

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

a44abe2e6e9860e4e10d6ff3c44e3e8d.png

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

b4c9d6b22140a87979ddcc11a4247504.png

3.5 执行a.out结果

0a5de4cba9cf85e8762e86324025fc47.png

3、 perlcc与pp工具简单比较

a) 都可以生成二进制可执行程序;

b) perlcc编译生成的程序依赖perl共享库,只能本机编译本机执行;

c) pp编译生成的程序包含perl所有模块,可以拷贝到其他linux机器执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值