RUSTC(1)

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 native library NAME. The optional KIND can be one of, static, dylib, or framework. If omitted, dylib is assumed.

--crate-type [bin|lib|rlib|dylib|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]
    Configure the output that rustc will produce

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

--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 TRIPLE
    Target triple cpu-manufacturer-kernel[-os] to compile for (see chapter 3.4 of http://www.sourceware.org/autobook/ for details)

-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

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

ar=/path/to/ar
    Path to the archive utility to use when assembling archives.

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 target-cpu=help.

passes=list
    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=val
    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

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

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

AUTHOR
See AUTHORS.txt 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.