본문 바로가기
Tools for Dev

새로운 compile options

by leanu 2008. 7. 24.
-Wl,option : Pass option as an option to the linker.  If option contains commas, it is split into multiple options at the commas.

-g  Produce debugging information in the operating system’s native format (stabs, COFF, XCOFF, or DWARF 2).  GDB can work with this debugging information.

-pthread
           Add support for multithreading using the POSIX threads library.  This option sets flags for both the preprocessor and linker.  It does not affect the thread safety of
           object code produced by the compiler or that of libraries supplied with it.  These are HP-UX specific flags.

<Linker>
---------------------------------------------------------------------------------------------------
-R filename
       --just-symbols=filename
           Read symbol names and their addresses from filename, but do not relocate it or include it in the output.  This allows your output file to refer  symbolically  to  absolute
           locations of memory defined in other programs.  You may use this option more than once.

           For compatibility with other ELF linkers, if the -R option is followed by a directory name, rather than a file name, it is treated as the -rpath option.

---------------------------------------------------------------------------------------------------

-rpath-link DIR
           When using ELF or SunOS, one shared library may require another.  This happens when an "ld -shared" link includes a shared library as one of the input files.

           When the linker encounters such a dependency when doing a non-shared, non-relocatable link, it will automatically try to locate the required shared library and include  it
           in  the link, if it is not included explicitly.  In such a case, the -rpath-link option specifies the first set of directories to search.  The -rpath-link option may spec-
           ify a sequence of directory names either by specifying a list of names separated by colons, or by appearing multiple times.

           This option should be used with caution as it overrides the search path that may have been hard compiled into a shared library. In such a case it is possible to use  unin-
           tentionally a different search path than the runtime linker would do.

           The linker uses the following search paths to locate required shared libraries:

           1.  Any directories specified by -rpath-link options.

           2.  Any  directories  specified  by -rpath options.  The difference between -rpath and -rpath-link is that directories specified by -rpath options are included in the exe-
               cutable and used at runtime, whereas the -rpath-link option is only effective at link time. Searching -rpath in this way is only supported by native linkers and  cross
               linkers which have been configured with the --with-sysroot option.

           3.  On  an  ELF  system,  if  the -rpath and "rpath-link" options were not used, search the contents of the environment variable "LD_RUN_PATH". It is for the native linker
               only.

           4.  On SunOS, if the -rpath option was not used, search any directories specified using -L options.

           5.  For a native linker, the contents of the environment variable "LD_LIBRARY_PATH".

           6.  For a native ELF linker, the directories in "DT_RUNPATH" or "DT_RPATH" of a shared library are searched for shared libraries needed by it. The "DT_RPATH"  entries  are
               ignored if "DT_RUNPATH" entries exist.

           7.  The default directories, normally /lib and /usr/lib.

           8.  For a native linker on an ELF system, if the file /etc/ld.so.conf exists, the list of directories found in that file.

           If the required shared library is not found, the linker will issue a warning and continue with the link.


---------------------------------------------------------------------------------------------------
--start-group archives --end-group
           The archives should be a list of archive files.  They may be either explicit file names, or -l options.

           The specified archives are searched repeatedly until no new undefined references are created.  Normally, an archive is searched only once in the order that it is specified
           on  the  command line.  If a symbol in that archive is needed to resolve an undefined symbol referred to by an object in an archive that appears later on the command line,
           the linker would not be able to resolve that reference.  By grouping the archives, they all be searched repeatedly until all possible references are resolved.

           Using this option has a significant performance cost.  It is best to use it only when there are unavoidable circular references between two or more archives.

---------------------------------------------------------------------------------------------------

-Bdynamic
       -dy
       -call_shared
           Link  against  dynamic  libraries.   This is only meaningful on platforms for which shared libraries are supported.  This option is normally the default on such platforms.
           The different variants of this option are for compatibility with various systems.  You may use this option multiple times on the command line: it affects library searching
           for -l options which follow it.

       -Bgroup
           Set  the  "DF_1_GROUP"  flag  in the "DT_FLAGS_1" entry in the dynamic section.  This causes the runtime linker to handle lookups in this object and its dependencies to be
           performed only inside the group.  --unresolved-symbols=report-all is implied.  This option is only meaningful on ELF platforms which support shared libraries.

       -Bstatic
       -dn
       -non_shared
       -static
           Do not link against shared libraries.  This is only meaningful on platforms for which shared libraries are supported.  The different variants of this option are  for  com-
           patibility  with  various  systems.   You may use this option multiple times on the command line: it affects library searching for -l options which follow it.  This option
           also implies --unresolved-symbols=report-all.  This option can be used with -shared.  Doing so means that a shared library is being created but that all of  the  library’s
           external references must be resolved by pulling in entries from static libraries.

---------------------------------------------------------------------------------------------------

-lnamespec
       --library=namespec
           Add the archive or object file specified by namespec to the list of files to link.  This option may be used any number of times.  If namespec is of the form :filename,  ld
           will search the library path for a file called filename, otherise it will search the library path for a file called libnamespec.a.

           On systems which support shared libraries, ld may also search for files other than libnamespec.a.  Specifically, on ELF and SunOS systems, ld will search a directory for a
           library called libnamespec.so before searching for one called libnamespec.a.  (By convention, a ".so" extension indicates a shared library.)  Note that this behavior  does
           not apply to :filename, which always specifies a file called filename.

           The linker will search an archive only once, at the location where it is specified on the command line.  If the archive defines a symbol which was undefined in some object
           which appeared before the archive on the command line, the linker will include the appropriate file(s) from the archive.  However, an undefined symbol in an object appear-
           ing later on the command line will not cause the linker to search the archive again.

           See the -( option for a way to force the linker to search archives multiple times.

           You may list the same archive multiple times on the command line.

           This type of archive searching is standard for Unix linkers.  However, if you are using ld on AIX, note that it is different from the behaviour of the AIX linker.


댓글