3.17.5 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 behaviour 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.
-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
.o files 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_loader executable- 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_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-
These options are passed to the Darwin linker. The Darwin linker man page
describes them in detail.
|