📄 0198-0199.html
字号:
<HTML>
<HEAD>
<TITLE>Linux Complete Command Reference:User Commands:EarthWeb Inc.-</TITLE>
</HEAD>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<SCRIPT>
<!--
function displayWindow(url, width, height) {
var Win = window.open(url,"displayWindow",'width=' + width +
',height=' + height + ',resizable=1,scrollbars=yes');
}
//-->
</SCRIPT>
</HEAD>
-->
<!-- ISBN=0672311046 //-->
<!-- TITLE=Linux Complete Command Reference//-->
<!-- AUTHOR=Red Hat//-->
<!-- PUBLISHER=Macmillan Computer Publishing//-->
<!-- IMPRINT=Sams//-->
<!-- CHAPTER=01 //-->
<!-- PAGES=0001-0736 //-->
<!-- UNASSIGNED1 //-->
<!-- UNASSIGNED2 //-->
<P><CENTER>
<a href="0196-0197.html">Previous</A> | <a href="../ewtoc.html">Table of Contents</A> | <a href="0200-0201.html">Next</A></CENTER></P>
<A NAME="PAGENUM-198"><P>Page 198</P></A>
<P>These _m options are defined for the DEC Alpha implementations:
</P>
<TABLE>
<TR><TD>
_mno-soft-float
</TD><TD>
Use (do not use) the hardware floating-point instructions for floating-point operations.
When
</TD></TR><TR><TD>
_msoft-float
</TD><TD>
_msoft-float is specified, functions in
libgcc1.c will be used to perform floating-point operations. Unless they are replaced by routines that emulate the floating-point operations,
or compiled in such a way as to call such emulations routines, these routines will issue
floating-point operations. If you are compiling for an Alpha without floating-point operations,
you must ensure that the library is built so as not to call them.<BR>
Note that Alpha implementations without floating-point operations are required to
have floating-point registers.
</TD></TR><TR><TD>
_mfp-reg, _mno-fp-regs
</TD><TD>
Generate code that uses (does not use) the floating-point register set.
_mno-fp-regs implies
_msoft-float. If the floating-point register set is not used, floating-point operands are passed
in integer registers as if they were integers and floating-point results are passed in
$0 instead of $f0. This is a nonstandard calling sequence, so any function with a floating-point argument
or return value called by code compiled with
_mno-fp-regs must also be compiled with that option.<BR>
A typical use of this option is building a kernel that does not use, and hence need not save
and restore, any floating-point registers.
</TD></TR></TABLE>
<P>These additional options are available on System V Release 4 for compatibility with other compilers on those systems:
</P>
<TABLE>
<TR><TD>
_G
</TD><TD>
On SVr4 systems, gcc accepts the option
_G (and passes it to the system linker), for
compatibility with other compilers. However, we suggest you use
_symbolic or _shared as appropriate, instead of supplying linker options on the
gcc command line.
</TD></TR><TR><TD>
_Qy
</TD><TD>
Identify the versions of each tool used by the compiler, in an
.ident assembler directive in the output.
</TD></TR><TR><TD>
_Qn
</TD><TD>
Refrain from adding .ident directives to the output file (this is the default).
</TD></TR><TR><TD>
_YP,dirs
</TD><TD>
Search the directories dirs, and no others, for libraries specified with
_l. You can separate directory entries in dirs from one another with colons.
</TD></TR><TR><TD>
_Ym,dir
</TD><TD>
Look in the directory dir to find the M4 preprocessor. The assembler uses this option.
</TD></TR></TABLE>
<P><B>
CODE GENERATION OPTIONS
</B>
</P>
<P>These machine-independent options control the interface conventions used in code generation.
</P>
<P>Most of them begin with _f. These options have both positive and negative forms; the negative form of
_ffoo would be _fno_foo. In the following table, only one of the forms is listed—the one which is not the default. You can figure out the
other form by either removing no_ or adding it.
</P>
<TABLE>
<TR><TD>
_fnonnull_objects
</TD><TD>
Assume that objects reached through references are not null (C++ only).
Normally, GNU C++ makes conservative assumptions about objects reached
through references. For example, the compiler must check that
a is not null in code like the following:<BR>
obj &a = g (); a.f (2);<BR>
Checking that references of this sort have nonnull values requires extra code, however, and it
is unnecessary for many programs. You can use
_fnonnull-objects to omit the checks for null, if your program doesn't require checking.
</TD></TR><TR><TD>
_fpcc_struct_return
</TD><TD>
Use the same convention for returning
struct and union values that is used by the usual
C compiler on your system. This convention is less efficient for small structures, and on
many machines it fails to be reentrant; but it has the advantage of allowing intercallability
between gcc-compiled code and pcc-compiled code.
</TD></TR><TR><TD>
_freg_struct_return
</TD><TD>
Use the convention that
struct and union values are returned in registers when possible. This
is more efficient for small structures than
_fpcc_struct_return.
If you specify neither _fpcc_struct_return nor
_freg_struct_return, GNU CC defaults to whichever convention is standard for the target. If there is no standard convention, GNU
CC defaults to _fpcc_struct_return.
</TD></TR></TABLE>
<A NAME="PAGENUM-199"><P>Page 199</P></A>
<TABLE>
<TR><TD>
_fshort_enums
</TD><TD>
Allocate to an enum type only as many bytes as it needs for the declared range of possible
values. Specifically, the enum type will be equivalent to the smallest integer type that has enough room.
</TD></TR><TR><TD>
_fshort_double
</TD><TD>
Use the same size for double as for
float.
</TD></TR><TR><TD>
_fshared_data
</TD><TD>
Requests that the data and
non-const variables of this compilation be shared data rather
than private data. The distinction makes sense only on certain operating systems, where shared
data is shared between processes running the same program, while private data exists in one copy
per process.
</TD></TR><TR><TD>
_fno_common
</TD><TD>
Allocate even uninitialized global variables in the
bss section of the object file, rather than generating them as common blocks. This has the effect that if the same variable is
declared (without extern) in two different compilations, you will get an error when you link them.
The only reason this might be useful is if you want to verify that the program will work on
other systems which always work this way.
</TD></TR><TR><TD>
_fno_ident
</TD><TD>
Ignore the #ident directive.
</TD></TR><TR><TD>
_fno_gnu_linker
</TD><TD>
Do not output global initializations (such as C++ constructors and destructors) in the
form used by the GNU linker (on systems where the GNU linker is the standard method of
handling them). Use this option when you want to use a non-GNU linker, which also requires using
the collect2 program to make sure the system linker includes constructors and
destructors. (collect2 is included in the GNU CC distribution.) For systems that
must use collect2, the compiler driver gcc is configured to do this automatically.
</TD></TR><TR><TD>
_finhibit-size-directive
</TD><TD>
Don't output a
.size assembler directive, or anything else that would cause trouble if
the function is split in the middle, and the two halves are placed at locations far apart in
memory. This option is used when compiling
crtstuff.c; you should not need to use it for anything else.
</TD></TR><TR><TD>
_fverbose-asm
</TD><TD>
Put extra commentary information in the generated assembly code to make it more
readable. This option is generally only of use to those who actually need to read the generated
assembly code (perhaps while debugging the compiler itself).
</TD></TR><TR><TD>
_fvolatile
</TD><TD>
Consider all memory references through pointers to be volatile.
</TD></TR><TR><TD>
_fvolatile_global
</TD><TD>
Consider all memory references to extern and global data items to be volatile.
</TD></TR><TR><TD>
_fpic
</TD><TD>
If supported for the target machines, generate position-independent code, suitable for use in
a shared library.
</TD></TR><TR><TD>
_fPIC
</TD><TD>
If supported for the target machine, emit position-independent code, suitable for
dynamic linking, even if branches need large displacements.
</TD></TR><TR><TD>
_ffixed_reg
</TD><TD>
Treat the register named reg as a fixed register; generated code should never refer to it
(except perhaps as a stack pointer, frame pointer, or in some other fixed role).
reg must be the name of a register. The register names accepted are machine-specific and
are defined in the REGISTER_NAMES macro in the machine description macro file.
This flag does not have a negative form, because it specifies a three-way choice.
</TD></TR><TR><TD>
_fcall_used_reg
</TD><TD>
Treat the register named
reg as an allocable register that is clobbered by function calls. It
may be allocated for temporaries or variables that do not live across a call. Functions compiled
this way will not save and restore the register
reg.
Use of this flag for a register that has a fixed pervasive role in the machine's execution
model, such as the stack pointer or frame pointer, will produce disastrous results.<BR>
This flag does not have a negative form, because it specifies a three-way choice.
</TD></TR><TR><TD>
_fcall_saved_reg
</TD><TD>
Treat the register named
reg as an allocable register saved by functions. It may be allocated
even for temporaries or variables that live across a call. Functions compiled this way will save
and restore the register reg if they use it.<BR>
Use of this flag for a register that has a fixed pervasive role in the machine's execution
model, such as the stack pointer or frame pointer, will produce disastrous results.
A different sort of disaster will result from the use of this flag for a register in which
function values may be returned.<BR>
This flag does not have a negative form, because it specifies a three-way choice.
</TD></TR></TABLE>
<P><CENTER>
<a href="0196-0197.html">Previous</A> | <a href="../ewtoc.html">Table of Contents</A> | <a href="0200-0201.html">Next</A></CENTER></P>
</td>
</tr>
</table>
<!-- begin footer information -->
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -