a0546ded10
This commit disables rustc's emission of rpath attributes into dynamic libraries and executables by default. The functionality is still preserved, but it must now be manually enabled via a `-C rpath` flag. This involved a few changes to the local build system: * --disable-rpath is now the default configure option * Makefiles now prefer our own LD_LIBRARY_PATH over the user's LD_LIBRARY_PATH in order to support building rust with rust already installed. * The compiletest program was taught to correctly pass through the aux dir as a component of LD_LIBRARY_PATH in more situations. The major impact of this change is that neither rustdoc nor rustc will work out-of-the-box in all situations because they are dynamically linked. It must be arranged to ensure that the libraries of a rust installation are part of the LD_LIBRARY_PATH. The default installation paths for all platforms ensure this, but if an installation is in a nonstandard location, then configuration may be necessary. Additionally, for all developers of rustc, it will no longer be possible to run $target/stageN/bin/rustc out-of-the-box. The old behavior can be regained through the `--enable-rpath` option to the configure script. This change brings linux/mac installations in line with windows installations where rpath is not possible. Closes #11747 [breaking-change]
195 lines
5.3 KiB
Groff
195 lines
5.3 KiB
Groff
.TH RUSTC "1" "March 2014" "rustc 0.11-pre" "User Commands"
|
|
.SH NAME
|
|
rustc \- The Rust compiler
|
|
.SH SYNOPSIS
|
|
.B rustc
|
|
[\fIOPTIONS\fR] \fIINPUT\fR
|
|
|
|
.SH DESCRIPTION
|
|
This program is a compiler for the Rust language, available at
|
|
<\fBhttps://www.rust-lang.org\fR>.
|
|
|
|
.SH OPTIONS
|
|
|
|
.TP
|
|
\fB\-\-crate-type=[bin|lib|dylib|rlib|staticlib]\fR
|
|
Configure the flavor of rust crate that is generated (default `bin`)
|
|
.TP
|
|
\fB\-\-cfg\fR SPEC
|
|
Configure the compilation environment
|
|
.TP
|
|
\fB\-\-emit=[asm,ir,bc,obj,link]\fR
|
|
Configure the output that rustc will produce
|
|
.TP
|
|
\fB\-h\fR, \fB\-\-help\fR
|
|
Display this message
|
|
.TP
|
|
\fB\-L\fR PATH
|
|
Add a directory to the library search path
|
|
.TP
|
|
\fB\-\-no\-trans\fR
|
|
Run all passes except translation; no output
|
|
.TP
|
|
\fB\-\-no\-analysis\fR
|
|
Parse and expand the source, but run no analysis and produce no output
|
|
.TP
|
|
\fB\-g\fR
|
|
Emit DWARF debug information into object files generated.
|
|
.TP
|
|
\fB\-\-debuginfo\fR LEVEL
|
|
Emit DWARF debug info to the objects created: 0 = no debug info, 1 =
|
|
line-tables only (for stacktraces and breakpoints), 2 = full debug
|
|
info with variable and type information (same as -g).
|
|
.TP
|
|
\fB\-O\fR
|
|
Equivalent to \fI\-\-opt\-level=2\fR
|
|
.TP
|
|
\fB\-o\fR FILENAME
|
|
Write output to <filename>. Ignored if more than one --emit is specified.
|
|
.TP
|
|
\fB\-\-opt\-level\fR LEVEL
|
|
Optimize with possible levels 0-3
|
|
.TP
|
|
\fB\-\-out\-dir\fR DIR
|
|
Write output to compiler-chosen filename in <dir>. Ignored if -o is specified.
|
|
(default the current directory)
|
|
.TP
|
|
\fB\-\-parse\-only\fR
|
|
Parse only; do not compile, assemble, or link
|
|
.TP
|
|
\fB\-\-pretty\fR [TYPE]
|
|
Pretty-print the input instead of compiling; valid types are: normal
|
|
(un-annotated source), expanded (crates expanded), typed (crates
|
|
expanded, with type annotations), or identified (fully parenthesized,
|
|
AST nodes and blocks with IDs)
|
|
.TP
|
|
\fB\-\-dep-info\fR [FILENAME]
|
|
Output dependency info to <filename> after compiling, in o format suitable
|
|
for use by Makefiles.
|
|
.TP
|
|
\fB\-\-sysroot\fR PATH
|
|
Override the system root
|
|
.TP
|
|
\fB\-\-test\fR
|
|
Build a test harness
|
|
.TP
|
|
\fB\-\-target\fR TRIPLE
|
|
Target triple cpu-manufacturer-kernel[-os] to compile for (see
|
|
http://sources.redhat.com/autobook/autobook/autobook_17.html
|
|
for details)
|
|
.TP
|
|
\fB\-W\fR help
|
|
Print 'lint' options and default settings
|
|
.TP
|
|
\fB\-W\fR OPT, \fB\-\-warn\fR OPT
|
|
Set lint warnings
|
|
.TP
|
|
\fB\-A\fR OPT, \fB\-\-allow\fR OPT
|
|
Set lint allowed
|
|
.TP
|
|
\fB\-D\fR OPT, \fB\-\-deny\fR OPT
|
|
Set lint denied
|
|
.TP
|
|
\fB\-F\fR OPT, \fB\-\-forbid\fR OPT
|
|
Set lint forbidden
|
|
.TP
|
|
\fB\-Z\fR FLAG
|
|
Set internal debugging options. Use "-Z help" to print available options.
|
|
.TP
|
|
\fB\-C\fR FLAG[=VAL], \fB\-\-codegen\fR FLAG[=VAL]
|
|
Set a codegen-related flag to the value specified. Use "-C help" to print
|
|
available flags. See CODEGEN OPTIONS below
|
|
.TP
|
|
\fB\-v\fR, \fB\-\-version\fR
|
|
Print version info and exit
|
|
|
|
.SH CODEGEN OPTIONS
|
|
|
|
.TP
|
|
\fBar\fR=/path/to/ar
|
|
Path to the archive utility to use when assembling archives.
|
|
.TP
|
|
\fBlinker\fR=/path/to/cc
|
|
Path to the linker utility to use when linking libraries, executables, and
|
|
objects.
|
|
.TP
|
|
\fBlink-args\fR='-flag1 -flag2'
|
|
A space-separated list of extra arguments to pass to the linker when the linker
|
|
is invoked.
|
|
.TP
|
|
\fBtarget-cpu\fR=help
|
|
Selects a target processor. If the value is 'help', then a list of available
|
|
CPUs is printed.
|
|
.TP
|
|
\fBtarget-feature\fR='+feature1 -feature2'
|
|
A space-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.
|
|
.TP
|
|
\fBpasses\fR=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.
|
|
.TP
|
|
\fBllvm-args\fR='-arg1 -arg2'
|
|
A space-separated list of arguments to pass through to LLVM.
|
|
.TP
|
|
\fBsave-temps\fR
|
|
If specified, the compiler will save more files (.bc, .o, .no-opt.bc) generated
|
|
throughout compilation in the output directory.
|
|
.TP
|
|
\fBrpath\fR
|
|
If specified, then the rpath value for dynamic libraries will be set in
|
|
either dynamic library or executable outputs.
|
|
.TP
|
|
\fBno-prepopulate-passes\fR
|
|
Suppresses pre-population of the LLVM pass manager that is run over the module.
|
|
.TP
|
|
\fBno-vectorize-loops\fR
|
|
Suppresses running the loop vectorization LLVM pass, regardless of optimization
|
|
level.
|
|
.TP
|
|
\fBno-vectorize-slp\fR
|
|
Suppresses running the LLVM SLP vectorization pass, regardless of optimization
|
|
level.
|
|
.TP
|
|
\fBsoft-float\fR
|
|
Generates software floating point library calls instead of hardware
|
|
instructions.
|
|
.TP
|
|
\fBprefer-dynamic\fR
|
|
Prefers dynamic linking to static linking.
|
|
.TP
|
|
\fBno-integrated-as\fR
|
|
Force usage of an external assembler rather than LLVM's integrated one.
|
|
.TP
|
|
\fBrelocation-model\fR=[pic,static,dynamic-no-pic]
|
|
The relocation model to use. (default: pic)
|
|
|
|
.SH "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
|
|
|
|
.SH "SEE ALSO"
|
|
|
|
rustdoc
|
|
|
|
.SH "BUGS"
|
|
See <\fBhttps://github.com/rust-lang/rust/issues\fR> for issues.
|
|
|
|
.SH "AUTHOR"
|
|
See \fBAUTHORS.txt\fR in the Rust source distribution.
|
|
|
|
.SH "COPYRIGHT"
|
|
This work is dual-licensed under Apache 2.0 and MIT terms. See \fBCOPYRIGHT\fR
|
|
file in the rust source distribution.
|