These options are defined for all architectures running the Darwin operating system.
FSF GCC on Darwin does not create “fat” object files; it creates an object file for the single architecture that GCC was built to target. Apple's GCC on Darwin does create “fat” files if multiple -arch
options are used; it does so by running the compiler or linker multiple times and joining the results together with lipo
.
The subtype of the file created (like ‘ppc7400
’ or ‘ppc970
’ or ‘i686
’) is determined by the flags that specify the ISA that GCC is targeting, like -mcpu
or -march
. The -force_cpusubtype_ALL
option can be used to override this.
The Darwin tools vary in their behavior when presented with an ISA mismatch. The assembler, as
, only permits instructions to be used that are valid for the subtype of the file it is generating, so you cannot put 64-bit instructions in a ‘ppc750
’ object file. The linker for shared libraries, /usr/bin/libtool
, fails and prints an error if asked to create a shared library with a less restrictive subtype than its input files (for instance, trying to put a ‘ppc970
’ object file in a ‘ppc7400
’ library). The linker for executables, ld
, quietly gives the executable the most restrictive subtype of any of its input files.
-F
dir
-I
options and are scanned in a left-to-right order. A framework directory is a directory with frameworks in it. A framework is a directory with a Headers
and/or PrivateHeaders
directory contained directly in it that ends in .framework
. The name of a framework is the name of this directory excluding the .framework
. Headers associated with the framework are found in one of those two directories, with Headers
being searched first. A subframework is a framework directory that is in a framework's Frameworks
directory. Includes of subframework headers can only appear in a header of a framework that contains the subframework, or in a sibling subframework header. Two subframeworks are siblings if they occur in the same framework. A subframework should not have the same name as a framework; a warning is issued if this is violated. Currently a subframework cannot have subframeworks; in the future, the mechanism may be extended to support this. The standard frameworks can be found in /System/Library/Frameworks
and /Library/Frameworks
. An example include looks like #include <Framework/header.h>
, where Framework
denotes the name of the framework and header.h
is found in the PrivateHeaders
or Headers
directory.
-iframework
dir
-F
except the directory is a treated as a system directory. The main difference between this -iframework
and -F
is that with -iframework
the compiler does not warn about constructs contained within header files found via dir. This option is valid only for the C family of languages. -gused
-feliminate-unused-debug-symbols
. This is by default ON. -gfull
-mmacosx-version-min=
version
10.1
, 10.2
, and 10.3.9
. If the compiler was built to use the system's headers by default, then the default for this option is the system version on which the compiler is running, otherwise the default is to make choices that are compatible with as many systems and code bases as possible.
-mkernel
-mkernel
option sets -static
, -fno-common
, -fno-use-cxa-atexit
, -fno-exceptions
, -fno-non-call-exceptions
, -fapple-kext
, -fno-weak
and -fno-rtti
where applicable. This mode also sets -mno-altivec
, -msoft-float
, -fno-builtin
and -mlong-branch
for PowerPC targets. -mone-byte-bool
bool
’ so that ‘sizeof(bool)==1
’. By default ‘sizeof(bool)
’ is ‘4
’ when compiling for Darwin/PowerPC and ‘1
’ when compiling for Darwin/x86, so this option has no effect on x86. Warning: The -mone-byte-bool
switch causes GCC to generate code that is not binary compatible with code generated without that switch. Using this switch may require recompiling all other modules in a program, including system libraries. Use this switch to conform to a non-default data model.
-mfix-and-continue
-ffix-and-continue
-findirect-data
.o
files into already-running programs. -findirect-data
and -ffix-and-continue
are provided for backwards compatibility. -all_load
-arch_errors_fatal
-bind_at_load
-bundle
-bundle_loader
executable
-dynamiclib
libtool
command. -force_cpusubtype_ALL
-mcpu
or -march
option. -allowable_client
client_name-client_name
-compatibility_version
-current_version
-dead_strip
-dependency-file
-dylib_file
-dylinker_install_name
-dynamic
-exported_symbols_list
-filelist
-flat_namespace
-force_flat_namespace
-headerpad_max_install_names
-image_base
-init
-install_name
-keep_private_externs
-multi_module
-multiply_defined
-multiply_defined_unused
-noall_load
-no_dead_strip_inits_and_terms
-nofixprebinding
-nomultidefs
-noprebind
-noseglinkedit
-pagezero_size
-prebind
-prebind_all_twolevel_modules
-private_bundle
-read_only_relocs
-sectalign
-sectobjectsymbols
-whyload
-seg1addr
-sectcreate
-sectobjectsymbols
-sectorder
-segaddr
-segs_read_only_addr
-segs_read_write_addr
-seg_addr_table
-seg_addr_table_filename
-seglinkedit
-segprot
-segs_read_only_addr
-segs_read_write_addr
-single_module
-static
-sub_library
-sub_umbrella
-twolevel_namespace
-umbrella
-undefined
-unexported_symbols_list
-weak_reference_mismatches
-whatsloaded
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-4.9.3/gcc/Darwin-Options.html