Perl语言全面编译(二)-nodefaultlib -release -libpath:"c:\perl\5.6.0\lib\MSWin32-x86\CORE" -machine: x86 -libpath:c:\perl\5.6.0\lib\MSWin32-x86/CORE c:\perl\5.6.0\lib\MSWin32-x86\CO RE\perl56.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib com dlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib abc.pl.c 然后再输入:abc.exe,如果输出结果与abc.pl一样,那么编译就成功了。这个程序是使用Visual C 的CL.EXE C/C 编译程序编译的。在Unix-Style下是使用CC或者GCC编译的。 模块编译注意事项: 目前PerlCC标准编译方式可以支持大多数程序的模块使用,但是我推荐尽量使用内部命令来完成相应任务,诸如IO::Socket模块可以使用socket 内部函数。因为 IO::Socket是无法在PerlCC下面编译成功的,为什么? 大家知道Perl很多的模块是本身Perl的语言和内部函数编写的。但是有一部分包括IO::Socket DBD DBI等这些常用的模块,由于Perl本身内置函数限制,采用了PerlXS接口通过C 程序达到目的的。这些是通过第三方程序达到目的模块是无法成功的编译。所以我建议尽量使用非含有第三方程序的模块编程。有人可能会说了,我使用了DBI DBD来操作数据库,难道让我放弃吗?不,我觉得任何事情都是有它的解决方法,Perl也一样。Perl Bytecode将会解决这一问题(详情情看第4节)。 编程方式注意事项:我为什么要在开头说OOP 等相关技术以及在本文中提及了OOP的编写?因为PerlCC编译有一定的局限性,如果采用OOP就可以避免这个局限性,而且会更好的发挥,众所周知,OOP是编程发式的有一革命,你迟早都会涉及的,所以早一点总比晚一点好。我们经常编写程序的时候用“require”命令来引用其它Perl程序文件。然而这种方式不是PerlCC不支持,PerlCC当然支持,这个命令,但是问题在于它无法被编译入PerlCC的主程序内,也就是说主程序被编译了,然而外部引用的这个没有被编译,这样会造成很多问题,首先是暴露了原始代码,其次它人可以随意修改,肯能导致很多量(比如密码)被套出,也可以修改程序运行的模式。但是这也是有点,最后一节将会详尽讲述。 上一篇:Perl语言全面编译(三) 下一篇:各种平台下Perl模块的安装方法 更多相关文章
|
推荐文章
精彩文章
|