DESCRIPTION

perlcc creates standalone executables from Perl programs, using the code generators provided by the B module. At present, you may either create executable Perl bytecode, using the -B option, or generate and compile C files using the standard and 'optimised' C backends.

The code generated in this way is not guaranteed to work. The whole codegen suite (perlcc included) should be considered very experimental. Use for production purposes is strongly discouraged.

OPTIONS

-LC library directories

Adds the given directories to the library search path when C code is passed to your C compiler.

-IC include directories

Adds the given directories to the include file search path when C code is passed to your C compiler; when using the Perl bytecode option, adds the given directories to Perl's include path.

-o output file name

Specifies the file name for the final compiled executable.

Without given output file name we use the base of the input file, or with -ea.out resp. a.exe and a randomized intermediate C filename. If the input file is an absolute path on a non-windows system use the basename.

-c C file name

Create C file only; do not compile and link to a standalone binary.

-e perl code

Compile a one-liner, much the same as perl -e '...'

--check

Pass -c flag to the backend, prints all backend warnings to STDOUT and exits before generating and compiling code. Similar to perl -c.

-S

"Keep source". Do not delete generated C code after compilation.

-B

Use the Perl bytecode code generator.

-O

Use the 'optimised' C code generator B::CC. This is more experimental than everything else put together, and the code created is not guaranteed to compile in finite time and memory, or indeed, at all.

-O1-4

Pass the numeric optimisation option to the compiler backend. Shortcut for -Wb=-On.

This does not enforce B::CC.

-v 0-6

Set verbosity of output from 0 to max. 6.

-r

Run the resulting compiled script after compiling it.

--log logfile

Log the output of compiling to a file rather than to stdout.

-f<option> or --f=<option>

Pass the options to the compiler backend, such as -fstash or -fno-delete-pkg.

--Wb=options

Pass the options to the compiler backend, such as --Wb=-O2,-v

--Wc=options

Pass comma-seperated options to cc.

--Wl=options

Pass comma-seperated options to ld.

-T or -t

run the backend using perl -T or -t

-A

Allow perl options to be passed to the executable first, like -D...

Adds -DALLOW_PERL_OPTIONS which omits -- from being added to the options handler.

-u package

Add package(s) to compiler and force linking to it.

-U package

Skip package(s). Do not compile and link the package and its sole dependencies.

--stash

Detect external packages automatically via B::Stash

--static

Link to static libperl.a

--staticxs

Link to static XS if available. If the XS libs are only available as shared libs link to those ("prelink").

Systems without rpath (windows, cygwin) must be extend LD_LIBRARY_PATH/PATH at run-time. Together with -static, purely static modules and no run-time eval or require this will gain no external dependencies.

--shared

Link to shared libperl

--sharedxs

Link shared XSUBs if the linker supports it. No DynaLoader needed. This will still require the shared XSUB libraries to be installed at the client, modification of @INC in the source is probably required. (Not yet implemented)

-m|--sharedlib [Modulename]

Create a module, resp. a shared library. Currently only enabled for Bytecode and CC. (not yet tested)

--testsuite

Tries be nice to Test:: modules, like preallocating the file handles 4 and 5, and munge the output of BEGIN.