Movatterモバイル変換


[0]ホーム

URL:


 / 
B-C-1.57
River stage zero No dependents
/perlcc

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 backendperlcc -O3 file.pl         # Compiles with C, using -O3 optimizationsperlcc -B file.pl          # Compiles using the bytecode backendperlcc -B -m file.pm       # Compiles a module to file.pmcperlcc -c file.pl          # Creates a C file, 'file.c'perlcc -S -o hello file.pl # Keep C fileperlcc -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/dynaloadedperlcc -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 Cperlcc -L /foo hello       # extra libraries for Cperlcc --Wb=-Dsp           # extra perl compiler optionsperlcc -fno-delete-pkg     # extra perl compiler optionsperlcc --Wc=-fno-openmp    # extra C compiler optionsperlcc --Wl=-s             # extra C linker optionsperlcc -uIO::Socket        # force saving IO::Socketperlcc -UB                 # "unuse" B, compile without any B symbolsperlcc -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 SYNOPSISperlcc -v2 -h         # verbose help, also DESCRIPTION and OPTIONSperlcc --version         # prints internal perlcc and the B-C release version

DESCRIPTION

perlcc creates standalone executables from Perl programs, using the code generators provided by theB 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 consideredvery 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. For multiple paths use multiple -L options.

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

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

-cC file name

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

-eperl code

Compile a one-liner, much the same asperl -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.

--cross pathto/config.sh

Use a different%B::C::Config from anotherconfig.sh for cross-compilation. Passes -cross=path to the backend.

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

-O1-4

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

This does not enforce B::CC.

-v0-6

Set verbosity of output from 0 to max. 6.

-r

Run the resulting compiled script after compiling it.

--loglogfile

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 phasesc(B::* compilation),cc(cc compile + link), andr (runtime).

--no-spawn

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

Module Install Instructions

To install B::C, copy and paste the appropriate command in to your terminal.

cpanm

cpanm B::C

CPAN shell

perl -MCPAN -e shellinstall B::C

For more information on module installation, please visitthe detailed CPAN module installation guide.

Keyboard Shortcuts

Global
sFocus search bar
?Bring up this help dialog
GitHub
gpGo to pull requests
gigo to github issues (only if github is preferred repository)
POD
gaGo to author
gcGo to changes
giGo to issues
gdGo to dist
grGo to repository/SCM
gsGo to source
gbGo to file browse
Search terms
module: (e.g.module:Plugin)
distribution: (e.g.distribution:Dancer auth)
author: (e.g.author:SONGMU Redis)
version: (e.g.version:1.00)

[8]ページ先頭

©2009-2025 Movatter.jp