Okay, finally here is the solution to compiling external source GNU applications into your Perl source on Win32 systems using
http://www.indigostar.com/perl2exe.htm compiler. My GNU applications came from an installation of cygwin
http://unxutils.sourceforge.net/ or
http://gnuwin32.sourceforge.net/
As per IndigoStar's manual page
http://www.indigostar.com/pxman.htm you have to use the "-tiny" option when compiling your source.
perl2exe -tiny /path/to/your/source/code/source.pl
In your Perl source code you also have to add in commands to "include" the external dependent modules into your EXE at compile time.
#perl2exe_bundle "C:\cygwin\bin\find.exe"
#perl2exe_bundle "C:\cygwin\bin\cygwin1.dll"
#perl2exe_bundle "C:\cygwin\bin\cygintl-1.dll"
my $this_dir = $ENV{TEMP} || $ENV{TMP} || ($^O eq "MSWin32" ? $ENV{WIN
+DIR} : '/tmp');
For this example I'm importing GNU find.exe. The extra DLL's are required also by cygwin. If you run it without these DLL's compiled you get an error requesting you import them also. And yes the hash (#) at the beginning of the line is required.
The last line there is important, once its compiled how does your application know where the compiled components will reside at runtime? IndigoStar's compiler makes temporary copies of the imported programs to a temporary directory, which are removed at the end of execution. Where that temporary directory actually is for your system is based on this command, so use it yourself. Then in your code when you utilise the "find.exe" add this variable into your code so your program can find it.
open( FIND, "$this_dir\\find . -type d -print0 |" )
or die "can't run find: $!";
This will compile all the external dependencies into one exe, with a few extra dll's that are created because of the "-tiny" option. This is now fully portable to any other box, and doesn't require perl or cygwin installed. No more dependencies!!
Enjoy!
Dean
Programming these days takes more than a lone avenger with a compiler. - sam
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.