Provided by: rustc_1.24.1+dfsg1+llvm-0ubuntu2_amd64 bug

NAME

       rustc - The Rust compiler

SYNOPSIS

       rustc [OPTIONS] INPUT

DESCRIPTION

       This program is a compiler for the Rust language, available at https://www.rust-lang.org.

OPTIONS

       -h, --help
              Display the help message.

       --cfg SPEC
              Configure the compilation environment.

       -L [KIND=]PATH
              Add a directory to the library search path.  The optional KIND can be one of:

              dependency
                     only lookup transitive dependencies here

              crate  only lookup local `extern crate` directives here

              native only lookup native libraries here

              framework
                     only look for OSX frameworks here

              all    look for anything here (the default)

       -l [KIND=]NAME
              Link  the  generated crate(s) to the specified library NAME.  The optional KIND can
              be one of static, dylib, or framework.  If omitted, dylib is assumed.

       --crate-type [bin|lib|rlib|dylib|cdylib|staticlib]
              Comma separated list of types of crates for the compiler to emit.

       --crate-name NAME
              Specify the name of the crate being built.

       --emit [asm|llvm-bc|llvm-ir|obj|link|dep-info|mir][=PATH]
              Configure the output that rustc will  produce.  Each  emission  may  also  have  an
              optional  explicit  output  PATH  specified for that particular emission kind. This
              path takes precedence over the -o option.

       --print [crate-name|file-names|sysroot]
              Comma separated list of compiler information to print on stdout.

       -g     Equivalent to -C debuginfo=2.

       -O     Equivalent to -C opt-level=2.

       -o FILENAME
              Write output to FILENAME. Ignored if multiple --emit outputs  are  specified  which
              don't have an explicit path otherwise.

       --out-dir DIR
              Write  output  to  compiler‐chosen  filename  in  DIR.  Ignored if -o is specified.
              Defaults to the current directory.

       --explain OPT
              Provide a detailed explanation of an error message.

       --test Build a test harness.

       --target TARGET
              Target triple for which the code is compiled. This option defaults  to  the  host’s
              target     triple.     The     target     triple    has    the    general    format
              <arch><sub>-<vendor>-<sys>-<abi>, where:

              <arch> x86, arm, thumb, mips, etc.

              <sub>  for example on ARM: v5, v6m, v7a, v7m, etc.

              <vendor>
                     pc, apple, nvidia, ibm, etc.

              <sys>  none, linux, win32, darwin, cuda, etc.

              <abi>  eabi, gnu, android, macho, elf, etc.

       -W help
              Print 'lint' options and default settings.

       -W OPT, --warn OPT
              Set lint warnings.

       -A OPT, --allow OPT
              Set lint allowed.

       -D OPT, --deny OPT
              Set lint denied.

       -F OPT, --forbid OPT
              Set lint forbidden.

       -C FLAG[=VAL], --codegen FLAG[=VAL]
              Set a codegen‐related flag to the value specified.  Use -C help to print  available
              flags.  See CODEGEN OPTIONS below.

       -V, --version
              Print version info and exit.

       -v, --verbose
              Use verbose output.

       --extern NAME=PATH
              Specify  where  an  external  rust  library  is  located. These should match extern
              declarations in the crate's source code.

       --sysroot PATH
              Override the system root.

       -Z FLAG
              Set internal debugging options.  Use -Z help to print available options.

       --color auto|always|never
              Configure coloring of output:

              auto   colorize, if output goes to a tty (default);

              always always colorize output;

              never  never colorize output.

CODEGEN OPTIONS

       linker=/path/to/cc
              Path to the linker utility to use when linking libraries, executables, and objects.

       link-args='-flag1 -flag2'
              A space‐separated list of extra arguments to pass to the linker when the linker  is
              invoked.

       lto    Perform LLVM link‐time optimizations.

       target-cpu=help
              Selects  a target processor.  If the value is 'help', then a list of available CPUs
              is printed.

       target-feature='+feature1,-feature2'
              A comma‐separated list of  features  to  enable  or  disable  for  the  target.   A
              preceding  '+'  enables  a  feature  while  a preceding '-' disables it.  Available
              features can be discovered through llc -mcpu=help.

       passes=val
              A space‐separated list of extra LLVM passes to run.  A value of 'list'  will  cause
              rustc to print all known passes and exit.  The passes specified are appended at the
              end of the normal pass manager.

       llvm-args='-arg1 -arg2'
              A space‐separated list of arguments to pass through to LLVM.

       save-temps
              If specified, the compiler will save more files  (.bc,  .o,  .no-opt.bc)  generated
              throughout compilation in the output directory.

       rpath  If  specified,  then  the  rpath  value for dynamic libraries will be set in either
              dynamic library or executable outputs.

       no-prepopulate-passes
              Suppresses pre‐population of the LLVM pass manager that is run over the module.

       no-vectorize-loops
              Suppresses running the loop vectorization LLVM  pass,  regardless  of  optimization
              level.

       no-vectorize-slp
              Suppresses  running  the  LLVM  SLP  vectorization pass, regardless of optimization
              level.

       soft-float
              Generates software floating point library calls instead of hardware instructions.

       prefer-dynamic
              Prefers dynamic linking to static linking.

       no-integrated-as
              Force usage of an external assembler rather than LLVM's integrated one.

       no-redzone
              Disable the use of the redzone.

       relocation-model=[pic,static,dynamic-no-pic]
              The relocation model to use.  (Default: pic)

       code-model=[small,kernel,medium,large]
              Choose the code model to use.

       metadata=val
              Metadata to mangle symbol names with.

       extra-filename=val
              Extra data to put in each output filename.

       codegen-units=n
              Divide crate into n units to optimize in parallel.

       remark=val
              Print remarks for these optimization passes (space separated, or "all").

       no-stack-check
              Disable checks for stack exhaustion (a memory‐safety hazard!).

       debuginfo=val
              Debug info emission level:

              0      no debug info;

              1      line‐tables only (for stacktraces and breakpoints);

              2      full debug info with variable and type information.

       opt-level=VAL
              Optimize with possible levels 0–3

ENVIRONMENT

       Some of these affect the output of the compiler, while others affect programs  which  link
       to the standard library.

       RUST_TEST_THREADS
              The test framework Rust provides executes tests in parallel. This variable sets the
              maximum number of threads used for this purpose. This setting is overridden by  the
              --test-threads option.

       RUST_TEST_NOCAPTURE
              If set to a value other than "0", a synonym for the --nocapture flag.

       RUST_MIN_STACK
              Sets the minimum stack size for new threads.

       RUST_BACKTRACE
              If  set  to  a  value  different  than "0", produces a backtrace in the output of a
              program which panics.

EXAMPLES

       To build an executable from a source file with a main function:
           $ rustc -o hello hello.rs

       To build a library from a source file:
           $ rustc --crate-type=lib hello-lib.rs

       To build either with a crate (.rs) file:
           $ rustc hello.rs

       To build an executable with debug info:
           $ rustc -g -o hello hello.rs

SEE ALSO

       rustdoc(1)

BUGS

       See https://github.com/rust-lang/rust/issues for issues.

AUTHOR

       See  https://github.com/rust-lang/rust/graphs/contributors   or   use   `git   log   --all
       --format='%cN <%cE>' | sort -u` in the rust source distribution.

COPYRIGHT

       This work is dual‐licensed under Apache 2.0 and MIT terms.  See COPYRIGHT file in the rust
       source distribution.