The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

perlcc - generate executables from Perl programs

SYNOPSIS

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

    perlcc -O file            # Compiles using the optimised CC backend
    perlcc -Wb=-O2 file       # Compiles with C, using -O2 optimizations
    perlcc -B file            # Compiles using the bytecode backend

    perlcc -c file            # Creates a C file, 'file.c'
    perlcc -S -o hello file   # Creates a C file, 'file.c',
                              # then compiles it to executable 'hello'
    perlcc -c out.c file      # Creates a C file, 'out.c' from 'file'

    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 (notice the space after -I)
    perlcc -L /foo hello      # extra libraries (notice the space after -L)

    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' logs compile
                              # log into 'c.log'.

    perlcc -h                 # help, only SYNOPSIS
    perlcc -v 2 -h            # verbose help, also DESCRIPTION and OPTIONS

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.

-c C file name

Create C code only; do not compile to a standalone binary.

-e perl code

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

-S

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.

-v 0-4

Set verbosity of output from 0 to max. 4.

-r

Run the resulting compiled script after compiling it.

-log logfile

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

-Wb=options

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

-T or -t

run the backend using perl -T or -t

-stash

Detect external packages automatically via B::Stash

-static

Link to static libperl.a (Not yet implemented)

-staticxs

Link to static XSUBs if available. Together with -static this will gain no external dependencies. (Not yet implemented)

-shared

Link to shared libperl (Not yet implemented)

-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)

-sharedlib

Create a shared library (--sharedlib for compat.). Currently disabled.

-testsuite
  perlcc -r -testsuite t/harness