DragonFly On-Line Manual Pages

Search: Section:  


PERLCC(1)             User Contributed Perl Documentation            PERLCC(1)

NAME

perlcc - generate executables from Perl programs

SYNOPSIS

perlcc hello.pl # Compiles into executable 'a.out' perlcc -o hello hello.pl # Compiles into executable 'hello' perlcc -O file.pl # Compiles using the optimised CC backend perlcc -O3 file.pl # Compiles with C, using -O3 optimizations perlcc -B file.pl # Compiles using the bytecode backend perlcc -B -m file.pm # Compiles a module to file.pmc perlcc -c file.pl # Creates a C file, 'file.c' perlcc -S -o hello file.pl # Keep C file perlcc -c out.c file.pl # Creates a C file, 'out.c' from 'file' perlcc --staticxs -r -o hello hello.pl # 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

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 "-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 c (B::* compilation), cc (cc compile + link), and r (runtime). --no-spawn Do not spawn subprocesses for compilation, because broken shells might not be able to kill its children. perl v5.20.2 2015-08-30 PERLCC(1)

Search: Section: