1 .TH RUSTC "1" "September 2016" "rustc 1.13.0" "User Commands"
3 rustc \- The Rust compiler
6 [\fIOPTIONS\fR] \fIINPUT\fR
9 This program is a compiler for the Rust language, available at https://www.rust\-lang.org.
14 \fB\-h\fR, \fB\-\-help\fR
15 Display the help message.
17 \fB\-\-cfg\fR \fISPEC\fR
18 Configure the compilation environment.
20 \fB\-L\fR [\fIKIND\fR=]\fIPATH\fR
21 Add a directory to the library search path.
22 The optional \fIKIND\fR can be one of:
26 only lookup transitive dependencies here
29 only lookup local `extern crate` directives here
32 only lookup native libraries here
35 only look for OSX frameworks here
38 look for anything here (the default)
41 \fB\-l\fR [\fIKIND\fR=]\fINAME\fR
42 Link the generated crate(s) to the specified library \fINAME\fR.
43 The optional \fIKIND\fR can be one of \fIstatic\fR, \fIdylib\fR, or
45 If omitted, \fIdylib\fR is assumed.
47 \fB\-\-crate\-type\fR [bin|lib|rlib|dylib|cdylib|staticlib]
48 Comma separated list of types of crates for the compiler to emit.
50 \fB\-\-crate\-name\fR \fINAME\fR
51 Specify the name of the crate being built.
53 \fB\-\-emit\fR [asm|llvm\-bc|llvm\-ir|obj|link|dep\-info][=\fIPATH\fR]
54 Configure the output that \fBrustc\fR will produce. Each emission may also have
55 an optional explicit output \fIPATH\fR specified for that particular emission
56 kind. This path takes precedence over the \fB-o\fR option.
58 \fB\-\-print\fR [crate\-name|file\-names|sysroot]
59 Comma separated list of compiler information to print on stdout.
62 Equivalent to \fI\-C\ debuginfo=2\fR.
65 Equivalent to \fI\-C\ opt\-level=2\fR.
67 \fB\-o\fR \fIFILENAME\fR
68 Write output to \fIFILENAME\fR. Ignored if multiple \fI\-\-emit\fR outputs are specified which
69 don't have an explicit path otherwise.
71 \fB\-\-out\-dir\fR \fIDIR\fR
72 Write output to compiler\[hy]chosen filename in \fIDIR\fR. Ignored if \fI\-o\fR is specified.
73 Defaults to the current directory.
75 \fB\-\-explain\fR \fIOPT\fR
76 Provide a detailed explanation of an error message.
81 \fB\-\-target\fR \fITARGET\fR
82 Target triple for which the code is compiled. This option defaults to the host’s target
83 triple. The target triple has the general format <arch><sub>\-<vendor>\-<sys>\-<abi>, where:
87 x86, arm, thumb, mips, etc.
90 for example on ARM: v5, v6m, v7a, v7m, etc.
93 pc, apple, nvidia, ibm, etc.
96 none, linux, win32, darwin, cuda, etc.
99 eabi, gnu, android, macho, elf, etc.
103 Print 'lint' options and default settings.
105 \fB\-W\fR \fIOPT\fR, \fB\-\-warn\fR \fIOPT\fR
108 \fB\-A\fR \fIOPT\fR, \fB\-\-allow\fR \fIOPT\fR
111 \fB\-D\fR \fIOPT\fR, \fB\-\-deny\fR \fIOPT\fR
114 \fB\-F\fR \fIOPT\fR, \fB\-\-forbid\fR \fIOPT\fR
117 \fB\-C\fR \fIFLAG\fR[=\fIVAL\fR], \fB\-\-codegen\fR \fIFLAG\fR[=\fIVAL\fR]
118 Set a codegen\[hy]related flag to the value specified.
119 Use \fI\-C help\fR to print available flags.
120 See CODEGEN OPTIONS below.
122 \fB\-V\fR, \fB\-\-version\fR
123 Print version info and exit.
125 \fB\-v\fR, \fB\-\-verbose\fR
128 \fB\-\-extern\fR \fINAME\fR=\fIPATH\fR
129 Specify where an external rust library is located. These should match
130 \fIextern\fR declarations in the crate's source code.
132 \fB\-\-sysroot\fR \fIPATH\fR
133 Override the system root.
136 Set internal debugging options.
137 Use \fI\-Z help\fR to print available options.
139 \fB\-\-color\fR auto|always|never
140 Configure coloring of output:
144 colorize, if output goes to a tty (default);
147 always colorize output;
150 never colorize output.
156 \fBar\fR=\fI/path/to/ar\fR
157 Path to the archive utility to use when assembling archives.
159 \fBlinker\fR=\fI/path/to/cc\fR
160 Path to the linker utility to use when linking libraries, executables, and
163 \fBlink\-args\fR='\fI\-flag1 \-flag2\fR'
164 A space\[hy]separated list of extra arguments to pass to the linker when the linker
168 Perform LLVM link\[hy]time optimizations.
170 \fBtarget\-cpu\fR=\fIhelp\fR
171 Selects a target processor.
172 If the value is 'help', then a list of available CPUs is printed.
174 \fBtarget\-feature\fR='\fI+feature1\fR,\fI\-feature2\fR'
175 A comma\[hy]separated list of features to enable or disable for the target.
176 A preceding '+' enables a feature while a preceding '\-' disables it.
177 Available features can be discovered through \fIllc -mcpu=help\fR.
179 \fBpasses\fR=\fIval\fR
180 A space\[hy]separated list of extra LLVM passes to run.
181 A value of 'list' will cause \fBrustc\fR to print all known passes and
183 The passes specified are appended at the end of the normal pass manager.
185 \fBllvm\-args\fR='\fI\-arg1\fR \fI\-arg2\fR'
186 A space\[hy]separated list of arguments to pass through to LLVM.
189 If specified, the compiler will save more files (.bc, .o, .no\-opt.bc) generated
190 throughout compilation in the output directory.
193 If specified, then the rpath value for dynamic libraries will be set in
194 either dynamic library or executable outputs.
196 \fBno\-prepopulate\-passes\fR
197 Suppresses pre\[hy]population of the LLVM pass manager that is run over the module.
199 \fBno\-vectorize\-loops\fR
200 Suppresses running the loop vectorization LLVM pass, regardless of optimization
203 \fBno\-vectorize\-slp\fR
204 Suppresses running the LLVM SLP vectorization pass, regardless of optimization
208 Generates software floating point library calls instead of hardware
211 \fBprefer\-dynamic\fR
212 Prefers dynamic linking to static linking.
214 \fBno\-integrated\-as\fR
215 Force usage of an external assembler rather than LLVM's integrated one.
218 Disable the use of the redzone.
220 \fBrelocation\-model\fR=[pic,static,dynamic\-no\-pic]
221 The relocation model to use.
224 \fBcode\-model\fR=[small,kernel,medium,large]
225 Choose the code model to use.
227 \fBmetadata\fR=\fIval\fR
228 Metadata to mangle symbol names with.
230 \fBextra\-filename\fR=\fIval\fR
231 Extra data to put in each output filename.
233 \fBcodegen\-units\fR=\fIn\fR
234 Divide crate into \fIn\fR units to optimize in parallel.
236 \fBremark\fR=\fIval\fR
237 Print remarks for these optimization passes (space separated, or "all").
239 \fBno\-stack\-check\fR
240 Disable checks for stack exhaustion (a memory\[hy]safety hazard!).
242 \fBdebuginfo\fR=\fIval\fR
243 Debug info emission level:
250 line\[hy]tables only (for stacktraces and breakpoints);
253 full debug info with variable and type information.
256 \fBopt\-level\fR=\fIVAL\fR
257 Optimize with possible levels 0\[en]3
261 Some of these affect the output of the compiler, while others affect programs
262 which link to the standard library.
265 \fBRUST_TEST_THREADS\fR
266 The test framework Rust provides executes tests in parallel. This variable sets
267 the maximum number of threads used for this purpose. This setting is overridden
268 by the --test-threads option.
271 \fBRUST_TEST_NOCAPTURE\fR
272 If set to a value other than "0", a synonym for the --nocapture flag.
276 Sets the minimum stack size for new threads.
280 If set to a value different than "0", produces a backtrace in the output of a program which panics.
283 To build an executable from a source file with a main function:
284 $ rustc \-o hello hello.rs
286 To build a library from a source file:
287 $ rustc \-\-crate\-type=lib hello\-lib.rs
289 To build either with a crate (.rs) file:
292 To build an executable with debug info:
293 $ rustc \-g \-o hello hello.rs
300 See https://github.com/rust\-lang/rust/issues for issues.
303 See https://github.com/rust\-lang/rust/graphs/contributors or use `git log --all --format='%cN <%cE>' | sort -u` in the rust source distribution.
306 This work is dual\[hy]licensed under Apache\ 2.0 and MIT terms.
307 See \fICOPYRIGHT\fR file in the rust source distribution.