Re: [問題] 有關PAR在WINXP上執行的問題

看板Perl作者 ((cynical.))時間18年前 (2007/09/03 06:43), 編輯推噓3(301)
留言4則, 2人參與, 最新討論串2/4 (看更多)
※ 引述《sxx (hurry up!!)》之銘言: : 大家好,第一次在這裡問問題請大家多多指教 : 今天在WINXP系統上灌了active perl 5.8.8 : 可以執行一些perl的程式沒有問題 : 之後使用了PPM灌了PAR模組(所有PAR相關的都灌了,PAR的版本是0.976) 最近剛好有用到 PAR, 以下提供一點自己的經驗. 首先是 ActivePerl 版本問題. 若要用 Par-Packer, 請一定要安裝 ActivePerl 5.8.8 rev822 以前 的版本. 為什麼呢? 查了 mailing list 的結果是因為 rev822 加入了 Perl 5.8 的 maintenance branch, (也就是未來會變成 Perl 5.9 的東西) 所以 SvIV() macro 會呼叫 Perl_sv_2iv_flags() function. ( http://www.nntp.perl.org/group/perl.par/2007/08/msg3193.html ) 現在的 Par-Packer 都不能用了. 幸好安裝舊版就可以解決. 再來是 PAR 版本太舊的問題, 現在不知道解決了沒有, 不過之前我有找到 一個 repository, 提供編給 5.8.8 的 PPM, 你可以用以下的指令安裝: ppm install http://theoryx5.uwinnipeg.ca/ppms/PAR-Packer-588.ppd : 目的是想試著將test.pl轉成test.exe : 輸入指令:(在命令提示字元下) : C:\perl>perl -MPAR -test.exe test.pl : 但是並沒有得到想要的結果 : 又嘗試輸入: : C:\perl>pp -o test.exe test.pl : 結果出現: : 'pp'不是內部或外部命令、可執行的程式或批次檔 : 給我的感覺就是灌了好像沒灌= =" 這是路徑沒有設定好的關係, 你可以直接使用絕對路徑執行: c:\perl\site\bin\pp test.pl -o test.exe : 我也嘗試過用perl makefile.pl, nmake, nmake test, nmake install的程序安裝 : 但結果是一樣的 : 希望大家能給我一點意見,謝謝! 自己編譯小弟倒是沒試過, 當初選定 Perl on Win32 的目標就是盡量不做太瑣碎的事. Orz 最後是 Par-Packer 的 -a 參數. (加入檔案) 可以透過 $ENV{PAR_TEMP} 這個路徑去存取. 當初不知道還以為檔案加到不見. XD 另外借這文章想順便請教一個 PAR + Gtk2 的問題.. XDDD 因為 Gtk2 實在比 Win32::GUI 方便太多了阿, 光是能用 Glade 就贏兩倍了. 但根據這篇 Re: Using PAR with gtk2 on MS Windows ( http://mail.gnome.org/archives/gtk-perl-list/2005-April/msg00187.html ) PAR 在包模組的時候並不會管系統上的 GTK 環境, 因此沒辦法 "只靠" PAR 達成 Perl Gtk2 程式的可攜, 我找到的解決方法是透過 NSIS, 其實是 PortableApps.com 的 ApplicationPortableTemplate.nsi ( http://portableapps.com/node/6709 ) 來產生可攜式的 Gtk2 環境. 但用 PAR 包出來的模組似乎還是有缺, (使用 -M Gtk2 -M Gtk2::GladeXML 參數 ). 用 Perl2Exe 包出來的倒是可以用...(可是我不喜歡商業軟體!) 不知道有沒有辦法列出一個程式會用到的檔案和所有模組呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.114.80

09/03 08:37, , 1F
謝謝!不過關於路徑的部分我先試過還是不行
09/03 08:37, 1F

09/03 08:38, , 2F
整個perl資料夾下都找不到pp執行檔,版本問題晚上再試試^^
09/03 08:38, 2F

09/03 09:29, , 3F
用舊版的的確是可以 所以我一直沒有升級 ~_~"
09/03 09:29, 3F

09/03 10:19, , 4F
用舊版的就可以了 謝謝兩位!
09/03 10:19, 4F
文章代碼(AID): #16spoiEC (Perl)
文章代碼(AID): #16spoiEC (Perl)