rustc (1) Linux Manual Page
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.
–cfgSPEC- 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-nameNAME- Specify the name of the crate being built.
–emit[asm|llvm-bc|llvm-ir|obj|link|dep-info|mir][=PATH]- Configure the output that
rustcwill produce. Each emission may also have an optional explicit output PATH specified for that particular emission kind. This path takes precedence over the-ooption. –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.
-oFILENAME- Write output to FILENAME. Ignored if multiple –emit outputs are specified which don’t have an explicit path otherwise.
–out-dirDIR- Write output to compiler-chosen filename in DIR. Ignored if -o is specified. Defaults to the current directory.
–explainOPT- Provide a detailed explanation of an error message.
–test- Build a test harness.
–targetTARGET- 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.
-WOPT,–warnOPT- Set lint warnings.
-AOPT,–allowOPT- Set lint allowed.
-DOPT,–denyOPT- Set lint denied.
-FOPT,–forbidOPT- Set lint forbidden.
-CFLAG[=VAL],–codegenFLAG[=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.
–externNAME=PATH- Specify where an external rust library is located. These should match extern declarations in the crate’s source code.
–sysrootPATH- Override the system root.
-ZFLAG- Set internal debugging options. Use -Z help to print available options.
–colorauto|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 llc -mcpu=help.
passes=val- A space-separated list of extra LLVM passes to run. A value of ‘list’ will cause
rustcto 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:
To build a library from a source file:
To build either with a crate (.rs) file:
To build an executable with debug info:
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.
