?? 01_4_11_6.asp.html
字號:
<font size="2">
PerlCC輸出內容:</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">------------------------------------------------------------------------------</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Compiling abc.pl:</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">-------------------------------------------------------------------------------</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2"> </font>
</td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Making C(abc.pl.c) for abc.pl!</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
C:\perl\5.6.0\bin\MSWin32-x86\perl.exe -IC:/perl/5.6.0/lib/MSWin32-x86 -IC:/perl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
/5.6.0/lib -IC:/perl/site/5.6.0/lib/MSWin32-x86 -IC:/perl/site/5.6.0/lib -I. -MB</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
::Stash -c abc.pl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
C:\perl\5.6.0\bin\MSWin32-x86\perl.exe -IC:/perl/5.6.0/lib/MSWin32-x86 -IC:/perl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
/5.6.0/lib -IC:/perl/site/5.6.0/lib/MSWin32-x86 -IC:/perl/site/5.6.0/lib -I. -MO</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
=C,-l2000,-umain,-uattributes,-uDB,-uWin32 abc.pl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Starting compile</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Walking tree</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Prescan</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Saving methods</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Bootstrap attributes abc.pl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Writing output</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Loaded B</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Loaded IO</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Loaded Fcntl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
abc.pl syntax OK</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Compiling C(abc) for abc.pl!</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
C:\perl\5.6.0\bin\MSWin32-x86\perl.exe -IC:/perl/5.6.0/lib/MSWin32-x86 -IC:/perl</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
/5.6.0/lib -IC:/perl/site/5.6.0/lib/MSWin32-x86 -IC:/perl/site/5.6.0/lib -I. E:\</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
DOCUME~1\ADMINI~1\LOCALS~1\Temp/abc.pl.tst</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
Couldn't open E:DOCUME~1ADMINI~1ocals~1temp/abc.pl.val</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
cl -Od -MD -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DPERL_MSVCRT_READFIX -Od -</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
MD -DNDEBUG -Ic:\perl\5.6.0\lib\MSWin32-x86/CORE -o abc abc.pl.c /link -nologo</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
-nodefaultlib -release -libpath:"c:\perl\5.6.0\lib\MSWin32-x86\CORE" -machine:</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
x86 -libpath:c:\perl\5.6.0\lib\MSWin32-x86/CORE c:\perl\5.6.0\lib\MSWin32-x86\CO</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
RE\perl56.lib oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib com</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
dlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib uuid.lib</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib</font></td></tr></table><table align=center width=620><tr><td class=a14>
<font size="2">
abc.pl.c</font></td></tr></table><table align=center width=620><tr><td class=a14>
然后再輸入:abc.exe,如果輸出結果與abc.pl一樣,那么編譯就成功了。這個程序是使用Visual C++的CL.EXE C/C++編譯程序編譯的。在Unix-Style下是使用CC或者GCC編譯的。</td></tr></table><table align=center width=620><tr><td class=a14>
模塊編譯注意事項:</td></tr></table><table align=center width=620><tr><td class=a14>
目前PerlCC標準編譯方式可以支持大多數程序的模塊使用,但是我推薦盡量使用內部命令來完成相應任務,諸如IO::Socket模塊可以使用socket 內部函數。因為 IO::Socket是無法在PerlCC下面編譯成功的,為什么? 大家知道Perl很多的模塊是本身Perl的語言和內部函數編寫的。但是有一部分包括IO::Socket DBD DBI等這些常用的模塊,由于Perl本身內置函數限制,采用了PerlXS接口通過C 程序達到目的的。這些是通過第三方程序達到目的模塊是無法成功的編譯。所以我建議盡量使用非含有第三方程序的模塊編程。有人可能會說了,我使用了DBI DBD來操作數據庫,難道讓我放棄嗎?不,我覺得任何事情都是有它的解決方法,Perl也一樣。Perl Bytecode將會解決這一問題(詳情情看第4節)。</td></tr></table><table align=center width=620><tr><td class=a14>
編程方式注意事項:我為什么要在開頭說OOP 等相關技術以及在本文中提及了OOP的編寫?因為PerlCC編譯有一定的局限性,如果采用OOP就可以避免這個局限性,而且會更好的發揮,眾所周知,OOP是編程發式的有一革命,你遲早都會涉及的,所以早一點總比晚一點好。我們經常編寫程序的時候用“require”命令來引用其它Perl程序文件。然而這種方式不是PerlCC不支持,PerlCC當然支持,這個命令,但是問題在于它無法被編譯入PerlCC的主程序內,也就是說主程序被編譯了,然而外部引用的這個沒有被編譯,這樣會造成很多問題,首先是暴露了原始代碼,其次它人可以隨意修改,肯能導致很多量(比如密碼)被套出,也可以修改程序運行的模式。但是這也是有點,最后一節將會詳盡講述。</td></tr>
<tr><td class=a14>
<p align="right"><a href="http://www.ccw.com.cn/htm/app/aprog/01_4_11_5.asp"><font color="#0000ff">上一講
>></font></a> <a href="http://www.ccw.com.cn/htm/app/aprog/01_4_12_2.asp"><font color="#0000FF"><< 下一講</font></a></td></tr>
</table><br>
<table align=center width=620><tr><td align=right>(網頁編輯:<a href='mailto:app@ccw.com.cn'>徐向陽</a>)</td></tr></table><br>
<br><table align=center width=620><tr><td class=a14>相關文章</td></tr><tr><td><ul>
<li><a href='http://www.ccw.com.cn/htm/app/aprog/01_4_11_5.asp'>Perl 語言全面編譯(二)</a></li>
<li><a href='http://www.ccw.com.cn/htm/app/aprog/01_3_27_4.asp'>Perl 語言全面編譯</a></li>
<li><a href='http://www.ccw.com.cn/htm/app/aprog/001228_4.asp'>也談基于Web的Form多響應技術</a></li>
</ul></td></tr></table>
<table align=center width=620><tr><td align=right>
<form method=post action='/pub/subMail.asp' onsubmit='JavaScript: return chkField(this)'>
<INPUT type='hidden' name='rec' value='10242'>
您的姓名:<INPUT type="text" name=myName size=10>
您朋友的E-mail:<INPUT type="text" name=friendMail size=10>
<INPUT type="submit" value="推薦給好友">
</form>
</td></tr>
<tr><td align=right>
<b>[<a href="javascript:window.close()">關閉窗口</a>]</b>
</td></tr>
</table>
<script language="javascript">function chkField(fmObj)
{if (!fmObj.friendMail.value){
alert("請輸入您朋友的E-mail!");
fmObj.friendMail.focus();
return false;
}
return true;
}
</script>
<table align=center width=680>
<tr><td><hr size=1 width=660 color=#f46240></td></tr>
</table><br>
<p align=center>Copyright(C) ccw.com.cn,All rights reserved</p>
<p align=center><b>中國計算機世界出版服務公司版權所有</b></p><!-- This document saved from http://www.ccw.com.cn/htm/app/aprog/01_4_11_6.asp -->
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -