Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PERLCC(1)	      User Contributed Perl Documentation	     PERLCC(1)

       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 very
       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.  For multiple paths use multiple -L

       -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.  For
	   multiple paths use multiple -I options.

       -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 '...'"

	   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.

       --debug or -D
	   Shortcut for	--Wb=-Dfull -S to enable all debug levels and also
	   preserve source code, also view --Wb	to enable some specific
	   debugging options.

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

	   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

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

	   Pass	comma-seperated	options	to cc.

	   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

	   Detect external packages automatically via B::Stash

	   Link	to static libperl.a

	   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.

	   Link	to shared libperl

	   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)

	   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

	   Benchmark the different phases c (B::* compilation),	cc (cc compile
	   + link), and	r (runtime).

	   Do not spawn	subprocesses for compilation, because broken shells
	   might not be	able to	kill its children.

perl v5.24.1			  2017-07-03			     PERLCC(1)


Want to link to this manual page? Use this URL:

home | help