Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Contact Us
Online Help
Domain Status
Man Pages

Virtual Servers

Topology Map

Server Agreement
Year 2038

USA Flag



Man Pages

Manual Reference Pages  -  PERLCC (1)

.ds Aq ’


perlcc - generate executables from Perl programs



    perlcc            # Compiles into executable a.out
    perlcc -o hello   # Compiles into executable hello

    perlcc -O          # Compiles using the optimised CC backend
    perlcc -O3         # Compiles with C, using -O3 optimizations
    perlcc -B          # Compiles using the bytecode backend
    perlcc -B -m       # Compiles a module to file.pmc

    perlcc -c          # Creates a C file, file.c
    perlcc -S -o hello # Keep C file
    perlcc -c out.c    # Creates a C file, out.c from file
    perlcc --staticxs -r -o hello # Compiles,links and runs with
                               # XS modules static/dynaloaded

    perlcc -e print q//      # Compiles a one-liner into a.out
    perlcc -c -e print q//   # Creates a C file a.out.c

    perlcc -I /foo hello       # extra headers for C
    perlcc -L /foo hello       # extra libraries for C
    perlcc --Wb=-Dsp           # extra perl compiler options
    perlcc -fno-delete-pkg     # extra perl compiler options
    perlcc --Wc=-fno-openmp    # extra C compiler options
    perlcc --Wl=-s             # extra C linker options

    perlcc -uIO::Socket        # force saving IO::Socket
    perlcc -UB                 # "unuse" B, compile without any B symbols

    perlcc -r hello            # compiles hello into a.out, runs a.out
    perlcc -r hello a b c      # compiles hello into a.out, runs a.out
                               # with arguments a b c

    perlcc hello -log c.log    # compiles hello into a.out, log into c.log

    perlcc -h                  # help, only SYNOPSIS
    perlcc -v2 -h              # verbose help, also DESCRIPTION and OPTIONS
    perlcc --version           # prints internal perlcc and the B-C release version


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 <B>veryB> experimental. Use for production purposes is strongly discouraged.


-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 -e a.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.

  perlcc -r --testsuite t/harness

--time Benchmark the different phases <B>cB> (B::* compilation), <B>ccB> (cc compile + link), and <B>rB> (runtime).
--no-spawn Do not spawn subprocesses for compilation, because broken shells might not be able to kill its children.
Search for    or go to Top of page |  Section 1 |  Main Index

perl v5.20.3 PERLCC (1) 2016-04-03

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with manServer 1.07.