3.17.7 Darwin Options
These options are defined for all architectures running the Darwin operating system.
FSF GCC on Darwin does not create “fat” object files; it will create an object file for the single architecture that it 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 targetting, 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 , will only permit instructions to be used that are valid for the subtype of the file it is generating, so you cannot put 64-bit instructions in an ` ppc750 ' object file. The linker for shared libraries, /usr/bin/libtool , will fail and print 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 , will quietly give the executable the most restrictive subtype of any of its input files.
-
-Fdir -
Add the framework directory dir to the head of the list of directories to be searched for header files. These directories are interleaved with those specified by
-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 will be 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.
-
-gused -
Emit debugging information for symbols that are used. For STABS debugging format, this enables
-feliminate-unused-debug-symbols
. This is by default ON.
-
-gfull -
Emit debugging information for all symbols and types.
-
-mmacosx-version-min=version -
The earliest version of MacOS X that this executable will run on is version. Typical values of version include
10.1,10.2, and10.3.9.The default for this option is to make choices that seem to be most useful.
-
-mone-byte-bool -
Override the defaults for `
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 -
Generate code suitable for fast turn around development. Needed to enable gdb to dynamically load
.ofiles into already running programs. -findirect-data and -ffix-and-continue are provided for backwards compatibility.
-
-all_load -
Loads all members of static archive libraries. See man ld(1) for more information.
-
-arch_errors_fatal -
Cause the errors having to do with files that have the wrong architecture to be fatal.
-
-bind_at_load -
Causes the output file to be marked such that the dynamic linker will bind all undefined references when the file is loaded or launched.
-
-bundle -
Produce a Mach-o bundle format file. See man ld(1) for more information.
-
-bundle_loaderexecutable -
This option specifies the executable that will be loading the build output file being linked. See man ld(1) for more information.
-
-dynamiclib -
When passed this option, GCC will produce a dynamic library instead of an executable when linking, using the Darwin
libtool
command.
-
-force_cpusubtype_ALL -
This causes GCC's output file to have the ALL subtype, instead of one controlled by the
-mcpu
or
-march
option.
-
-allowable_clientclient_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 - These options are passed to the Darwin linker. The Darwin linker man page describes them in detail.