LD(1)

NUME
ld - editorul de legături GNU

SINOPSIS
ld [opțiuni] fișier-obiect ...

DESCRIERE
ld combină mai multe fișiere obiect și fișiere de arhivă, realocă datele acestora și leagă referințele simbolice. De obicei, ultimul pas în compilarea unui program este rularea comenzii ld.

ld accepts Linker Command Language files written in a superset of AT&T's Link Editor Command Language syntax, to provide explicit and total control over the linking process.

This man page does not describe the command language; see the ld entry in "info" for full details on the command language and on other aspects of the GNU linker.

This version of ld uses the general purpose BFD libraries to operate on object files. This allows ld to read, combine, and write object files in many different formats---for example, COFF or "a.out". Different formats may be linked together to produce any available kind of object file.

Pe lângă flexibilitatea sa, editorul de legături GNU este mai util decât alți editori de legături în ceea ce privește furnizarea de informații de diagnosticare. Mulți editori de legături abandonează execuția imediat ce întâlnesc o eroare; ori de câte ori este posibil, ld continuă execuția, permițându-vă să identificați alte erori (sau, în unele cazuri, să obțineți un fișier de ieșire în ciuda erorii).

Editorul de legături GNU ld este conceput pentru a acoperi o gamă largă de situații și pentru a fi cât mai compatibil cu alți editori de legături. Prin urmare, aveți la dispoziție numeroase opțiuni pentru a-i controla comportamentul.

OPȚIUNI
The linker supports a plethora of command-line options, but in actual practice few of them are used in any particular context. For instance, a frequent use of ld is to link standard Unix object files on a standard, supported Unix system. On such a system, to link a file "hello.o":

        ld -o <output> /lib/crt0.o hello.o -lc

This tells ld to produce a file called output as the result of linking the file "/lib/crt0.o" with "hello.o" and the library "libc.a", which will come from the standard search directories. (See the discussion of the -l option below.)

Some of the command-line options to ld may be specified at any point in the command line. However, options which refer to files, such as -l or -T, cause the file to be read at the point at which the option appears in the command line, relative to the object files and other file options. Repeating non-file options with a different argument will either have no further effect, or override prior occurrences (those further to the left on the command line) of that option. Options which may be meaningfully specified more than once are noted in the descriptions below.

Non-option arguments are object files or archives which are to be linked together. They may follow, precede, or be mixed in with command-line options, except that an object file argument may not be placed between an option and its argument.

Usually the linker is invoked with at least one object file, but you can specify other forms of binary input files using -l, -R, and the script command language. If no binary input files at all are specified, the linker does not produce any output, and issues the message No input files.

If the linker cannot recognize the format of an object file, it will assume that it is a linker script. A script specified in this way augments the main linker script used for the link (either the default linker script or the one specified by using -T). This feature permits the linker to link against a file which appears to be an object or an archive, but actually merely defines some symbol values, or uses "INPUT" or "GROUP" to load other objects. Specifying a script in this way merely augments the main linker script, with the extra commands placed after the main script; use the -T option to replace the default linker script entirely, but note the effect of the "INSERT" command.

For options whose names are a single letter, option arguments must either follow the option letter without intervening whitespace, or be given as separate arguments immediately following the option that requires them.

For options whose names are multiple letters, either one dash or two can precede the option name; for example, -trace-symbol and --trace-symbol are equivalent. Note---there is one exception to this rule. Multiple letter options that start with a lower case 'o' can only be preceded by two dashes. This is to reduce confusion with the -o option. So for example -omagic sets the output file name to magic whereas --omagic sets the NMAGIC flag on the output.

Argumentele opțiunilor cu mai multe litere trebuie fie separate de numele opțiunii prin semnul egal, fie prezentate ca argumente separate imediat după opțiunea care le solicită. De exemplu, --trace-symbol foo și --trace-symbol=foo sunt echivalente. Se acceptă abrevieri unice ale numelor opțiunilor cu mai multe litere.

Note---if the linker is being invoked indirectly, via a compiler driver (e.g. gcc) then all the linker command-line options should be prefixed by -Wl, (or whatever is appropriate for the particular compiler driver) like this:

          gcc -Wl,--start-group foo.o bar.o -Wl,--end-group

This is important, because otherwise the compiler driver program may silently drop the linker options, resulting in a bad link. Confusion may also arise when passing options that require values through a driver, as the use of a space between option and argument acts as a separator, and causes the driver to pass only the option to the linker and the argument to the compiler. In this case, it is simplest to use the joined forms of both single- and multiple-letter options, such as:

          gcc foo.o bar.o -Wl,-eENTRY -Wl,-Map=a.map

Iată un tabel al opțiunilor generice din linia de comandă acceptate de editorul de legături GNU:

@fișier
    Citește opțiunile liniei de comandă din fișier. Opțiunile citite sunt inserate în locul opțiunii originale @fișier. Dacă fișier nu există sau nu poate fi citit, atunci opțiunea va fi tratată literal și nu va fi eliminată.

    Opțiunile din fișier sunt separate prin spații albe. Un caracter de spațiere poate fi inclus într-o opțiune prin includerea întregii opțiuni între ghilimele simple sau duble. Orice caracter (inclusiv o bară oblică inversă) poate fi inclus prin prefixarea caracterului care urmează să fie inclus cu o bară oblică inversă. fișier poate conține la rândul său opțiuni @fișier suplimentare; orice astfel de opțiuni vor fi procesate în mod recursiv.

-a cuvânt-cheie
    This option is supported for HP/UX compatibility. The keyword argument must be one of the strings archive, shared, or default. -aarchive is functionally equivalent to -Bstatic, and the other two keywords are functionally equivalent to -Bdynamic. This option may be used any number of times.

--audit BIBL_AUDIT
    Adaugă AUDITLIB la intrarea "DT_AUDIT" din secțiunea dinamică. Nu se verifică existența lui AUDITLIB și nici nu va utiliza DT_SONAME specificat în bibliotecă. Dacă este specificat de mai multe ori, "DT_AUDIT" va conține o listă de interfețe de audit care trebuie utilizate, separate prin două puncte. În cazul în care editorul de legături găsește un obiect cu o intrare de audit în timpul căutării bibliotecilor partajate, acesta va adăuga o intrare "DT_DEPAUDIT" corespunzătoare în fișierul de ieșire. Această opțiune este semnificativă numai pe platformele ELF care acceptă interfața rtld-audit.

-b format-intrare
--format=format-intrare
    ld may be configured to support more than one kind of object file. If your ld is configured this way, you can use the -b option to specify the binary format for input object files that follow this option on the command line. Even when ld is configured to support alternative object formats, you don't usually need to specify this, as ld should be configured to expect as a default input format the most usual format on each machine. input-format is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with objdump -i.)

    You may want to use this option if you are linking files with an unusual binary format. You can also use -b to switch formats explicitly (when linking object files of different formats), by including -b input-format before each group of object files in a particular format.

    Formatul implicit este preluat din variabila de mediu "GNUTARGET".

    De asemenea, puteți defini formatul de intrare dintr-un script, utilizând comanda "TARGET";

-c fișier-comenzi-MRI
--mri-script=fișier-comenzi-MRI
    For compatibility with linkers produced by MRI, ld accepts script files written in an alternate, restricted command language, described in the MRI Compatible Script Files section of GNU ld documentation. Introduce MRI script files with the option -c; use the -T option to run linker scripts written in the general-purpose ld scripting language. If MRI-cmdfile does not exist, ld looks for it in the directories specified by any -L options.

-d
-dc
-dp These three options are equivalent; multiple forms are supported for compatibility with other linkers. They assign space to common symbols even if a relocatable output file is specified (with -r). The script command "FORCE_COMMON_ALLOCATION" has the same effect.

--depaudit BIBL_AUDIT
-P BIBL_AUDIT
    Adaugă AUDITLIB la intrarea "DT_DEPAUDIT" din secțiunea dinamică. Nu se verifică existența lui AUDITLIB și nici nu va utiliza DT_SONAME specificat în bibliotecă. Dacă este specificat de mai multe ori, "DT_DEPAUDIT" va conține o listă de interfețe de audit care trebuie utilizate, separate prin două puncte. Această opțiune este semnificativă numai pe platformele ELF care acceptă interfața rtld-audit. Opțiunea „-P” este furnizată pentru compatibilitate cu Solaris.

--enable-linker-version
    Enables the "LINKER_VERSION" linker script directive, described in Output Section Data. If this directive is used in a linker script and this option has been enabled then a string containing the linker version will be inserted at the current point.

    Notă – poziția acestei opțiuni în linia de comandă a editorului de legături este importantă. Aceasta va afecta doar scripturile editorului de legături care urmează după ea în linia de comandă sau care sunt integrate în editorul de legături.

--disable-linker-version
    Dezactivează directiva "LINKER_VERSION" a scriptului editorului de legături, astfel încât să nu introducă un șir de versiuni. Aceasta este valoarea implicită.

--enable-non-contiguous-regions
    This option avoids generating an error if an input section does not fit a matching output section. The linker tries to allocate the input section to subseque nt matching output sections, and generates an error only if no output section is large enough. This is useful when several non-contiguous memory regions are available and the input section does not require a particular one. The order in which input sections are evaluated does not change, for instance:

              MEMORY {
                MEM1 (rwx) : ORIGIN = 0x1000, LENGTH = 0x14
                MEM2 (rwx) : ORIGIN = 0x1000, LENGTH = 0x40
                MEM3 (rwx) : ORIGIN = 0x2000, LENGTH = 0x40
              }
              SECTIONS {
                mem1 : { *(.data.*); } > MEM1
                mem2 : { *(.data.*); } > MEM2
                mem3 : { *(.data.*); } > MEM3
              }

              with input sections:
              .data.1: size 8
              .data.2: size 0x10
              .data.3: size 4

              results in .data.1 affected to mem1, and .data.2 and .data.3
              affected to mem2, even though .data.3 would fit in mem3.

    Această opțiune este incompatibilă cu instrucțiunile INSERT, deoarece modifică modul în care secțiunile de intrare sunt corelate cu secțiunile de ieșire.

--enable-non-contiguous-regions-warnings
    This option enables warnings when "--enable-non-contiguous-regions" allows possibly unexpected matches in sections mapping, potentially leading to silently discarding a section instead of failing because it does not fit any output region.

-e intrarea
--entry=intrarea
    Use entry as the explicit symbol for beginning execution of your program, rather than the default entry point. If there is no symbol named entry, the linker will try to parse entry as a number, and use that as the entry address (the number will be interpreted in base 10; you may use a leading 0x for base 16, or a leading 0 for base 8). For i386 PE, entry can be also the original function name (without the leading underscore and/or the trailing stdcall @number when applicable).

--exclude-libs biblioteca,biblioteca,...
    Specifies a list of archive libraries from which symbols should not be automatically exported. The library names may be delimited by commas or colons. Specifying "--exclude-libs ALL" excludes symbols in all archive libraries from automatic export. This option is available only for the i386 PE targeted port of the linker and for ELF targeted ports. For i386 PE, symbols explicitly listed in a .def file are still exported, regardless of this option. For ELF targeted ports, symbols affected by this option will be treated as hidden.

--exclude-modules-for-implib modul,modul,...
    Specifies a list of object files or archive members, from which symbols should not be automatically exported, but which should be copied wholesale into the import library being generated during the link. The module names may be delimited by commas or colons, and must match exactly the filenames used by ld to open the files; for archive members, this is simply the member name, but for object files the name listed must include and match precisely any path used to specify the input file on the linker's command-line. This option is available only for the i386 PE targeted port of the linker. Symbols explicitly listed in a .def file are still exported, regardless of this option.

-E
--export-dynamic
--no-export-dynamic
    When creating a dynamically linked executable, using the -E option or the --export-dynamic option causes the linker to add all symbols to the dynamic symbol table. The dynamic symbol table is the set of symbols which are visible from dynamic objects at run time.

    Dacă nu utilizați niciuna dintre aceste opțiuni (sau utilizați opțiunea --no-export-dynamic pentru a restabili comportamentul implicit), tabelul de simboluri dinamice va conține în mod normal numai acele simboluri care sunt menționate de un obiect dinamic menționat în legătură.

    If you use "dlopen" to load a dynamic object which needs to refer back to the symbols defined by the program, rather than some other dynamic object, then you will probably need to use this option when linking the program itself.

    De asemenea, puteți utiliza lista dinamică pentru a controla simbolurile care trebuie adăugate la tabelul dinamic de simboluri, în cazul în care formatul de ieșire acceptă acest lucru. A se vedea descrierea opțiunii --dynamic-list.

    Rețineți că această opțiune este specifică adaptărilor destinate formatului ELF. Adaptările destinate formatului PE acceptă o funcție similară pentru exportarea tuturor simbolurilor dintr-o DLL sau un fișier EXE; consultați descrierea opțiunii --export-all-symbols de mai jos.

--export-dynamic-symbol=global
    When creating a dynamically linked executable, symbols matching glob will be added to the dynamic symbol table. When creating a shared library, references to symbols matching glob will not be bound to the definitions within the shared library. This option is a no-op when creating a shared library and -Bsymbolic or --dynamic-list are not specified. This option is only meaningful on ELF platforms which support shared libraries.

--export-dynamic-symbol-list=fișier
    Specifică un --export-dynamic-symbol pentru fiecare șablon din fișier. Formatul fișierului este identic cu cel al nodului de versiune, fără domeniul de aplicare și numele nodului. Pentru mai multe informații, consultați VERSION.

-EB Leagă obiectele big-endian. Acest lucru afectează formatul de ieșire implicit.

-EL Leagă obiectele little-endian. Acest lucru afectează formatul de ieșire implicit.

-f nume
--auxiliary=nume
    When creating an ELF shared object, set the internal DT_AUXILIARY field to the specified name. This tells the dynamic linker that the symbol table of the shared object should be used as an auxiliary filter on the symbol table of the shared object name.

    If you later link a program against this filter object, then, when you run the program, the dynamic linker will see the DT_AUXILIARY field. If the dynamic linker resolves any symbols from the filter object, it will first check whether there is a definition in the shared object name. If there is one, it will be used instead of the definition in the filter object. The shared object name need not exist. Thus the shared object name may be used to provide an alternative implementation of certain functions, perhaps for debugging or for machine-specific performance.

    Această opțiune poate fi specificată de mai multe ori. Intrările DT_AUXILIARY vor fi create în ordinea în care apar în linia de comandă.

-F nume
--filter=nume
    When creating an ELF shared object, set the internal DT_FILTER field to the specified name. This tells the dynamic linker that the symbol table of the shared object which is being created should be used as a filter on the symbol table of the shared object name.

    If you later link a program against this filter object, then, when you run the program, the dynamic linker will see the DT_FILTER field. The dynamic linker will resolve symbols according to the symbol table of the filter object as usual, but it will actually link to the definitions found in the shared object name. Thus the filter object can be used to select a subset of the symbols provided by the object name.

    Some older linkers used the -F option throughout a compilation toolchain for specifying object-file format for both input and output object files. The GNU linker uses other mechanisms for this purpose: the -b, --format, --oformat options, the "TARGET" command in linker scripts, and the "GNUTARGET" environment variable. The GNU linker will ignore the -F option when not creating an ELF shared object.

-fini=nume
    When creating an ELF executable or shared object, call NAME when the executable or shared object is unloaded, by setting DT_FINI to the address of the function. By default, the linker uses "_fini" as the function to call.

-g  Ignorată. Furnizată pentru compatibilitatea cu alte instrumente.

-G valoare
--gpsize=valoare
    Set the maximum size of objects to be optimized using the GP register to size. This is only meaningful for object file formats such as MIPS ELF that support putting large and small objects into different sections. This is ignored for other object file formats.

-h nume
-soname=nume
    When creating an ELF shared object, set the internal DT_SONAME field to the specified name. When an executable is linked with a shared object which has a DT_SONAME field, then when the executable is run the dynamic linker will attempt to load the shared object specified by the DT_SONAME field rather than using the file name given to the linker.

-i  Efectuează o legătură incrementală (la fel ca opțiunea -r).

-init=nume
    When creating an ELF executable or shared object, call NAME when the executable or shared object is loaded, by setting DT_INIT to the address of the function. By default, the linker uses "_init" as the function to call.

-l spațiu-nume
--library=nume-specificație
    Adaugă fișierul arhivă sau fișierul obiect specificat de namespec la lista de fișiere care urmează să fie legate. Această opțiune poate fi utilizată de un număr nelimitat de ori. Dacă namespec este de forma :nume-fișier, ld va căuta în ruta bibliotecii un fișier numit nume-fișier, în caz contrar va căuta în ruta bibliotecii un fișier numit 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 appearing later on the command line will not cause the linker to search the archive again.

    Consultați opțiunea -( pentru o modalitate de a forța editorul de legături să caute arhivele de mai multe ori.

    Puteți lista aceeași arhivă de mai multe ori în linia de comandă.

    Acest tip de căutare în arhivă este standard pentru editorii de legături Unix. Cu toate acestea, dacă utilizați ld pe AIX, rețineți că acesta se comportă diferit față de editorul de legături AIX.

-L director-căutare
--library-path=director-căutare
    Adaugă ruta searchdir la lista de rute pe care ld le va căuta pentru biblioteci de arhivă și scripturi de control ld. Puteți utiliza această opțiune de orice număr de ori. Directoarele sunt căutate în ordinea în care sunt specificate în linia de comandă. Directoarele specificate în linia de comandă sunt căutate înaintea directoarelor implicite. Toate opțiunile -L se aplică tuturor opțiunilor -l, indiferent de ordinea în care apar opțiunile. Opțiunile -L nu afectează modul în care ld caută un script de legătură decât dacă este specificată opțiunea -T.

    Dacă director-căutare începe cu "=" sau $SYSROOT, atunci acest prefix va fi înlocuit cu prefixul sysroot, controlat de opțiunea --sysroot sau specificat la configurarea editorului de legături.

    Setul implicit de rute de căutare (atunci când nu este specificat cu -L) depinde de modul de emulare utilizat de ld și, în unele cazuri, și de modul în care a fost configurat.

    The paths can also be specified in a link script with the "SEARCH_DIR" command. Directories specified this way are searched at the point in which the linker script appears in the command line.

-m emularea
    Emulează emulația editorului de legături. Puteți lista emulările disponibile cu opțiunile --verbose sau -V.

    Dacă opțiunea -m nu este utilizată, emulația este preluată din variabila de mediu "LDEMULATION", dacă aceasta este definită.

    În caz contrar, emulația implicită depinde de modul în care a fost configurat editorul de legături.

--remap-inputs=model=numefișier
--remap-inputs-file=fișier
    These options allow the names of input files to be changed before the linker attempts to open them. The option --remap-inputs=foo.o=bar.o will cause any attempt to load a file called foo.o to instead try to load a file called bar.o. Wildcard patterns are permitted in the first filename, so --remap-inputs=foo*.o=bar.o will rename any input file that matches foo*.o to bar.o.

    O formă alternativă a opțiunii --remap-inputs-file=nume-fișier permite citirea reasocierilor dintr-un fișier. Fiecare linie din fișier poate conține o singură reasociere. Liniile goale sunt ignorate. Orice lucru de la un caracter hash (#) până la sfârșitul unei linii este considerat un comentariu și este, de asemenea, ignorat. Modelul de asociere poate fi separat de numele fișierului prin spații albe sau printr-un caracter de egalitate (=).

    The options can be specified multiple times. Their contents accumulate. The remappings will be processed in the order in which they occur on the command line, and if they come from a file, in the order in which they occur in the file. If a match is made, no further checking for that filename will be performed.

    If the replacement filename is /dev/null or just NUL then the remapping will actually cause the input file to be ignored. This can be a convenient way to experiment with removing input files from a complicated build environment.

    Rețineți că această opțiune depinde de poziție și afectează doar numele de fișiere care urmează după ea în linia de comandă. Astfel:

              ld foo.o --remap-inputs=foo.o=bar.o

    Nu va avea niciun efect, întrucât:

              ld --remap-inputs=foo.o=bar.o foo.o

    Va redenumi fișierul de intrare foo.o în bar.o.

    Note - these options also affect files referenced by INPUT statements in linker scripts. But since linker scripts are processed after the entire command line is read, the position of the remap options on the command line is not significant.

    If the verbose option is enabled then any mappings that match will be reported, although again the verbose option needs to be enabled on the command line before the remaped filenames appear.

    Dacă opțiunile -Map sau --print-map sunt activate, lista de reasociere va fi inclusă în rezultatul asocierii.

-M
--print-map
    Afișează o hartă a legăturilor la ieșirea standard. O hartă a legăturilor oferă informații despre legătură, inclusiv următoarele:

    •   În cazul în care fișierele obiect sunt plasate în memorie.

    •   Modul în care sunt alocate simbolurile comune.

    •   Toți membrii arhivei sunt incluși în legătură, cu menționarea simbolului care a determinat introducerea membrului arhivei.

    •   Valorile alocate simbolurilor.

        Note - symbols whose values are computed by an expression which involves a reference to a previous value of the same symbol may not have correct result displayed in the link map. This is because the linker discards intermediate results and only retains the final value of an expression. Under such circumstances the linker will display the final value enclosed by square brackets. Thus for example a linker script containing:

                   foo = 1
                   foo = foo * 4
                   foo = foo + 8

        va produce următorul rezultat în harta de legături dacă se utilizează opțiunea -M:

                   0x00000001                foo = 0x1
                   [0x0000000c]                foo = (foo * 0x4)
                   [0x0000000c]                foo = (foo + 0x8)

        A se vedea Expresii pentru mai multe informații despre expresiile din scripturile editorului de legături.

    •   Modul în care sunt fuzionate proprietățile GNU.

        When the linker merges input .note.gnu.property sections into one output .note.gnu.property section, some properties are removed or updated. These actions are reported in the link map. For example:

                S-a eliminat proprietatea 0xc0000002 pentru a îmbina fișierele foo.o (0x1) și bar.o (nu a fost găsit)

        Acest lucru indică faptul că proprietatea 0xc0000002 este eliminată din rezultatul final la combinarea proprietăților din foo.o — a cărei valoare a proprietății 0xc0000002 este 0x1 — și bar.o, care nu conține proprietatea 0xc0000002.

                S-a actualizat proprietatea 0xc0010001 (0x1) pentru a îmbina fișierele foo.o (0x1) și bar.o (0x1)

        Acest lucru indică faptul că valoarea proprietății 0xc0010001 este actualizată la 0x1 în rezultatul final atunci când se combină proprietățile din foo.o, a cărui valoare a proprietății 0xc0010001 este 0x1, și bar.o, a cărui valoare a proprietății 0xc0010001 este 0x1.

    •   Pe unele ținte ELF, o listă de corecții inserate de --relax

                foo.o: Ajustarea ramurii de la adresa 0x00000008 către „far” în secțiunea .text

        Acest lucru indică faptul că ramificația de la adresa 0x00000008 din fișierul foo.o, care vizează simbolul „far” din secțiunea .text, a fost înlocuită cu o trambulină.

--print-map-discarded
--no-print-map-discarded
    Afișează (sau nu afișează) lista secțiunilor eliminate și a celor colectate de motorul de colectare a gunoiului din harta de legături. Opțiune activată implicit.

--print-map-locals
--no-print-map-locals
    Print (or do not print) local symbols in the link map. Local symbols will have the text (local) printed before their name, and will be listed after all of the global symbols in a given section. Temporary local symbols (typically those that start with .L) will not be included in the output. Disabled by default.

-n
--nmagic
    Turn off page alignment of sections, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as "NMAGIC".

-N
--omagic
    Set the text and data sections to be readable and writable. Also, do not page-align the data segment, and disable linking against shared libraries. If the output format supports Unix style magic numbers, mark the output as "OMAGIC". Note: Although a writable text section is allowed for PE-COFF targets, it does not conform to the format specification published by Microsoft.

--no-omagic
    This option negates most of the effects of the -N option. It sets the text section to be read-only, and forces the data segment to be page-aligned. Note - this option does not enable linking against shared libraries. Use -Bdynamic for this.

-o ieșirea
--output=ieșirea
    Use output as the name for the program produced by ld; if this option is not specified, the name a.out is used by default. The script command "OUTPUT" can also specify the output file name.

    Notă – editorul de legături va șterge fișierul de ieșire înainte de a începe să scrie în el. Va face acest lucru chiar și în cazul în care se constată că legarea nu poate fi finalizată din cauza unor erori.

    Note - the linker will check to make sure that the output file name does not match the name of any of the input files, but that is all. In particular it will not complain if the output file might overwrite a source file or some other important file. Therefore in build systems it is recommended to use the -o option as the last option on the linker command line. For example consider:

              ld -o $(EXE) $(OBJS)
              ld $(OBJS) -o $(EXE)

    If the EXE variable is not defined for some reason, the first version of the linker command could end up deleting one of the object files (the first one in the OBJS list) whereas the second version of the linker command will generate an error message and not delete anything.

--dependency-file=fișier-dependențe
    Write a dependency file to depfile. This file contains a rule suitable for "make" describing the output file and all the input files that were read to produce it. The output is similar to the compiler's output with -M -MP. Note that there is no option like the compiler's -MM, to exclude "system files" (which is not a well-specified concept in the linker, unlike "system headers" in the compiler). So the output from --dependency-file is always specific to the exact state of the installation where it was produced, and should not be copied into distributed makefiles without careful editing.

-O nivel
    If level is a numeric values greater than zero ld optimizes the output. This might take significantly longer and therefore probably should only be enabled for the final binary. At the moment this option only affects ELF shared library generation. Future releases of the linker may make more use of this option. Also currently there is no difference in the linker's behaviour for different non-zero values of this option. Again this may change with future releases.

-plugin nume
    Involve a plugin in the linking process. The name parameter is the absolute filename of the plugin. Usually this parameter is automatically added by the complier, when using link time optimization, but users can also add their own plugins if they so wish.

    Note that the location of the compiler originated plugins is different from the place where the ar, nm and ranlib programs search for their plugins. In order for those commands to make use of a compiler based plugin it must first be copied into the ${libdir}/bfd-plugins directory. All gcc based linker plugins are backward compatible, so it is sufficient to just copy in the newest one.

--push-state
    Opțiunea --push-state permite păstrarea stării curente a fanioanelor care guvernează gestionarea fișierului de intrare, astfel încât toate acestea să poată fi restabilite cu o singură opțiune --pop-state corespunzătoare.

    The option which are covered are: -Bdynamic, -Bstatic, -dn, -dy, -call_shared, -non_shared, -static, -N, -n, --whole-archive, --no-whole-archive, -r, -Ur, --copy-dt-needed-entries, --no-copy-dt-needed-entries, --as-needed, --no-as-needed și -a.

    Una dintre destinațiile acestei opțiuni sunt specificațiile pentru pkg-config. Atunci când este utilizată împreună cu opțiunea --libs, toate bibliotecile care ar putea fi necesare sunt listate și, eventual, legate în mod automat. Este recomandabil să se returneze ceva precum:

            -Wl,--push-state,--as-needed -libone -libtwo -Wl,--pop-state

--pop-state
    Anulează efectul opțiunii --push-state și restabilește valorile anterioare ale fanioanelor care reglementează gestionarea fișierelor de intrare.

-q
--emit-relocs
    Lasă secțiunile de realocare și conținutul în executabilele complet legate. Instrumentele de analiză și optimizare post-legare pot avea nevoie de aceste informații pentru a efectua modificări corecte ale executabilelor. Acest lucru are ca rezultat executabile mai mari.

    În prezent, această opțiune este acceptată numai pe platformele ELF.

--force-dynamic
    Forțează ca fișierul de ieșire să aibă secțiuni dinamice. Această opțiune este specifică obiectivelor VxWorks.

-r
--relocatable
    Generate relocatable output---i.e., generate an output file that can in turn serve as input to ld. This is often called partial linking. As a side effect, in environments that support standard Unix magic numbers, this option also sets the output file's magic number to "OMAGIC". If this option is not specified, an absolute file is produced. When linking C++ programs, this option will not resolve references to constructors; to do that, use -Ur.

    When an input file does not have the same format as the output file, partial linking is only supported if that input file does not contain any relocations. Different output formats can have further restrictions; for example some "a.out"-based formats do not support partial linking with input files in other formats at all.

    When the relocatable output contains both contents which require link-time optimization (LTO) and contents which don't require LTO, a .gnu_object_only section will be created to contain a relocatable object file, as if -r is applied to all relocatable inputs which don't require LTO. When processing a relocatable input with a .gnu_object_only section, the linker will extract the .gnu_object_only section as a separate input.

    Rețineți că, întrucât -r grupează împreună anumite secțiuni din fișiere de intrare diferite, acest lucru poate avea un impact negativ asupra dimensiunii codului și asupra locației în biblioteca executabilă finală sau în biblioteca partajată.

    Această opțiune face același lucru ca și opțiunea -i.

-R nume-fișier
--just-symbols=nume-fișier
    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.

    Pentru compatibilitate cu alți editori de legături ELF, dacă opțiunea -R este urmată de un nume de director, în loc de un nume de fișier, aceasta este tratată ca opțiunea -rpath.

--rosegment
--no-rosegment
    Încearcă să se asigure că este creat doar un singur segment fără cod, numai pentru citire. Utilă numai atunci când este utilizată împreună cu opțiunea -z separate-code. Binarele rezultate ar trebui să fie mai mici decât în cazul în care -z separate-code este utilizată singură. Fără această opțiune sau dacă se specifică --no-rosegment, opțiunea -z separate-code va crea două segmente numai pentru citire, unul înaintea segmentului de cod și unul după acesta.

    Numele opțiunilor sunt înșelătoare, dar au fost alese pentru ca editorul de legături să fie compatibil cu editorii de legături LLD și GOLD.

    Aceste opțiuni sunt acceptate numai de țintele ELF.

-s
--strip-all
    Omite toate informațiile despre simboluri din fișierul de ieșire.

-S
--strip-debug
    Omite informațiile despre simbolurile de depanare (dar nu toate simbolurile) din fișierul de ieșire.

--strip-discarded
--no-strip-discarded
    Omite (sau nu omite) simbolurile globale definite în secțiunile eliminate. Activată în mod implicit.

-plugin-save-temps
    Stochează permanent fișierele intermediare „temporare” ale modulului.

-t
--trace
    Print the names of the input files as ld processes them. If -t is given twice then members within archives are also printed. -t output is useful to generate a list of all the object files and scripts involved in linking, for example, when packaging files for a linker bug report.

-T fișier-script
--script=fișier-script
    Use scriptfile as the linker script. This script replaces ld's default linker script (rather than adding to it), unless the script contains "INSERT", so commandfile must specify everything necessary to describe the output file.

    Dacă fișier-script nu există în directorul curent, «ld» îl caută în directoarele specificate de opțiunile -L precedente.

    Opțiunile din linia de comandă care apar înaintea opțiunii -T pot afecta scriptul, dar opțiunile din linia de comandă care apar după aceasta nu.

    Mai multe opțiuni -T se vor cumula dacă suplimentează scriptul curent; în caz contrar, va fi utilizată ultima opțiune -T care nu suplimentează scriptul.

    Există și alte modalități de a specifica scripturile editorului de legături. A se vedea

-dT fișier-script
--default-script=fișier-script
    Utilizează fișier-script ca script de editor de legături implicit.

    This option is similar to the --script option except that processing of the script is delayed until after the rest of the command line has been processed. This allows options placed after the --default-script option on the command line to affect the behaviour of the linker script, which can be important when the linker command line cannot be directly controlled by the user. (eg because the command line is being constructed by another tool, such as gcc).

-u simbol
--undefined=simbol
    Force symbol to be entered in the output file as an undefined symbol. Doing this may, for example, trigger linking of additional modules from standard libraries. -u may be repeated with different option arguments to enter additional undefined symbols. This option is equivalent to the "EXTERN" linker script command.

    Dacă această opțiune este utilizată pentru a forța introducerea de module suplimentare în legătură și dacă simbolul rămâne nedefinit ca o eroare, atunci trebuie utilizată opțiunea --require-defined.

--require-defined=simbol
    Require that symbol is defined in the output file. This option is the same as option --undefined except that if symbol is not defined in the output file then the linker will issue an error and exit. The same effect can be achieved in a linker script by using "EXTERN", "ASSERT" and "DEFINED" together. This option can be used multiple times to require additional symbols.

-Ur For programs that do not use constructors or destructors, or for ELF based systems this option is equivalent to -r: it generates relocatable output---i.e., an output file that can in turn serve as input to ld. For other binaries however the -Ur option is similar to -r but it also resolves references to constructors and destructors.

    For those systems where -r and -Ur behave differently, it does not work to use -Ur on files that were themselves linked with -Ur; once the constructor table has been built, it cannot be added to. Use -Ur only for the last partial link, and -r for the others.

--orphan-handling=MOD
    Controlează modul în care sunt tratate secțiunile orfane. O secțiune orfană este una care nu este menționată în mod specific într-un script al editorului de legături.

    MOD poate avea oricare dintre următoarele valori:

    "place"
        Secțiunile orfane sunt plasate într-o secțiune de ieșire adecvată, conform strategiei descrise în Secțiuni orfane. Opțiunea --unique influențează, de asemenea, modul în care sunt plasate secțiunile.

    "discard"
        Toate secțiunile orfane sunt eliminate, prin plasarea lor în secțiunea /DISCARD/.

    "warn"
        Editorul de legături va plasa secțiunea orfană conform „place” și va afișa, de asemenea, un avertisment.

    "error"
        Editorul de legături va ieși cu o eroare dacă se găsește vreo secțiune orfană.

    Dacă nu se specifică opțiunea --orphan-handling, valoarea implicită este "place".

--unique[=SECȚIUNEA]
    Creates a separate output section for every input section matching SECTION, or if the optional wildcard SECTION argument is missing, for every orphan input section. An orphan section is one not specifically mentioned in a linker script. You may use this option multiple times on the command line; It prevents the normal merging of input sections with the same name, overriding output section assignments in a linker script.

-v
--version
-V  Afișează numărul versiunii pentru ld. Opțiunea -V enumeră și emulările acceptate. Consultați, de asemenea, descrierea opțiunii --enable-linker-version din Opțiuni,,Opțiuni din linia de comandă care poate fi utilizată pentru a introduce șirul versiunii editorului de legături într-un binar.

-x
--discard-all
    Șterge toate simbolurile locale.

-X
--discard-locals
    Sterge toate simbolurile locale temporare; (aceste simboluri încep cu prefixele etichetelor locale specifice sistemului, de obicei .L pentru sistemele ELF sau L pentru sistemele tradiționale a.out).

-y simbol
--trace-symbol=simbol
    Afișează numele fiecărui fișier legat în care simbol apare. Această opțiune poate fi specificată de câte ori se dorește. Pe multe sisteme, este necesar să se adauge un caracter de subliniere la început.

    Această opțiune este utilă atunci când aveți un simbol nedefinit în legătura dvs., dar nu știți de unde provine referința.

-Y ruta
    Adaugă path la ruta de căutare implicită a bibliotecii. Această opțiune există pentru compatibilitate cu Solaris.

-z cuvânt-cheie
    Cuvintele cheie recunoscute sunt:

    call-nop=prefix-addr
    call-nop=suffix-nop
    call-nop=prefix-octeți
    call-nop=sufix-octeți
        Specify the 1-byte "NOP" padding when transforming indirect call to a locally defined function, foo, via its GOT slot. call-nop=prefix-addr generates "0x67 call foo". call-nop=suffix-nop generates "call foo 0x90". call-nop=prefix-byte generates "byte call foo". call-nop=suffix-byte generates "call foo byte". Supported for i386 and x86_64.

    cet-report=none
    cet-report=warning
    cet-report=error
        Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_IBT and GNU_PROPERTY_X86_FEATURE_1_SHSTK properties in input .note.gnu.property section. cet-report=none, which is the default, will make the linker not report missing properties in input files. cet-report=warning will make the linker issue a warning for missing properties in input files. cet-report=error will make the linker issue an error for missing properties in input files. Note that ibt will turn off the missing GNU_PROPERTY_X86_FEATURE_1_IBT property report and shstk will turn off the missing GNU_PROPERTY_X86_FEATURE_1_SHSTK property report. Supported for Linux/i386 and Linux/x86_64.

    combreloc
    nocombreloc
        Combină mai multe secțiuni de realocare dinamică și sortează pentru a îmbunătăți memoria cache pentru căutarea dinamică a simbolurilor. Nu face acest lucru dacă se folosește nocombreloc.

    common
    nocommon
        Generează simboluri comune cu tipul STT_COMMON în timpul unei legături realocabile. Utilizează tipul STT_OBJECT dacă nocommon.

    common-page-size=valoare
        Stabilește dimensiunea paginii cea mai frecvent utilizată la valoare. Structura imaginii de memorie va fi optimizată pentru a reduce la minimum numărul de pagini de memorie, în cazul în care sistemul utilizează pagini de această dimensiune.

    defs
        Raportează referințele la simboluri nedefinite din fișierele obiect obișnuite. Aceasta se întâmplă chiar și în cazul în care editorul de legături creează o bibliotecă partajată nesimbolică. Această opțiune este inversul opțiunii -z undefs.

    dynamic-undefined-weak
    nodynamic-undefined-weak
        Make undefined weak symbols dynamic when building a dynamic object, if they are referenced from a regular object file and not forced local by symbol visibility or versioning. Do not make them dynamic if nodynamic-undefined-weak. If neither option is given, a target may default to either option being in force, or make some other selection of undefined weak symbols dynamic. Not all targets support these options.

    execstack
        Marchează obiectul ca necesitând o stivă executabilă.

    global
        Această opțiune are sens doar atunci când se compilează un obiect partajat. Ea face ca simbolurile definite de acest obiect partajat să fie disponibile pentru rezolvarea simbolurilor din bibliotecile încărcate ulterior.

    globalaudit
        This option is only meaningful when building a dynamic executable. This option marks the executable as requiring global auditing by setting the "DF_1_GLOBAUDIT" bit in the "DT_FLAGS_1" dynamic tag. Global auditing requires that any auditing library defined via the --depaudit or -P command-line options be run for all dynamic objects loaded by the application.

    ibtplt
        Generează intrări PLT activate pentru Intel Indirect Branch Tracking (IBT). Acceptată în Linux/i386 și Linux/x86_64.

    ibt Generează GNU_PROPERTY_X86_FEATURE_1_IBT în secțiunea .note.gnu.property pentru a indica compatibilitatea cu IBT. Aceasta implică și ibtplt. Acceptată în Linux/i386 și Linux/x86_64.

    indirect-extern-access
    noindirect-extern-access
        Generează GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS în secțiunea .note.gnu.property pentru a indica faptul că fișierul obiect necesită indicatori de funcție canonici și nu poate fi utilizată cu „copy relocation”. Această opțiune implică, de asemenea, noextern-protected-data și nocopyreloc. Acceptată în i386 și x86-64.

        noindirect-extern-access elimină GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS din secțiunea .note.gnu.property.

    initfirst
        This option is only meaningful when building a shared object. It marks the object so that its runtime initialization will occur before the runtime initialization of any other objects brought into the process at the same time. Similarly the runtime finalization of the object will occur after the runtime finalization of any other objects.

    interpose
        Specifică încărcătorului dinamic să-și modifice ordinea de căutare a simbolurilor, astfel încât simbolurile din această bibliotecă partajată să aibă prioritate față de toate celelalte biblioteci partajate care nu sunt marcate în acest fel.

    unique
    nounique
        When generating a shared library or other dynamically loadable ELF object mark it as one that should (by default) only ever be loaded once, and only in the main namespace (when using "dlmopen"). This is primarily used to mark fundamental libraries such as libc, libpthread et al which do not usually function correctly unless they are the sole instances of themselves. This behaviour can be overridden by the "dlmopen" caller and does not apply to certain loading mechanisms (such as audit libraries).

    lam-u48
        Generează GNU_PROPERTY_X86_FEATURE_1_LAM_U48 în secțiunea .note.gnu.property pentru a indica compatibilitatea cu Intel LAM_U48. Acceptată în Linux/x86_64.

    lam-u57
        Generează GNU_PROPERTY_X86_FEATURE_1_LAM_U57 în secțiunea .note.gnu.property pentru a indica compatibilitatea cu Intel LAM_U57. Acceptată în Linux/x86_64.

    lam-u48-report=none
    lam-u48-report=warning
    lam-u48-report=error
        Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48 property in input .note.gnu.property section. lam-u48-report=none, which is the default, will make the linker not report missing properties in input files. lam-u48-report=warning will make the linker issue a warning for missing properties in input files. lam-u48-report=error will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64.

    lam-u57-report=none
    lam-u57-report=warning
    lam-u57-report=error
        Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U57 property in input .note.gnu.property section. lam-u57-report=none, which is the default, will make the linker not report missing properties in input files. lam-u57-report=warning will make the linker issue a warning for missing properties in input files. lam-u57-report=error will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64.

    lam-report=none
    lam-report=warning
    lam-report=error
        Specify how to report the missing GNU_PROPERTY_X86_FEATURE_1_LAM_U48 and GNU_PROPERTY_X86_FEATURE_1_LAM_U57 properties in input .note.gnu.property section. lam-report=none, which is the default, will make the linker not report missing properties in input files. lam-report=warning will make the linker issue a warning for missing properties in input files. lam-report=error will make the linker issue an error for missing properties in input files. Supported for Linux/x86_64.

    lazy
        When generating an executable or shared library, mark it to tell the dynamic linker to defer function call resolution to the point when the function is called (lazy binding), rather than at load time. Lazy binding is the default.

    loadfltr
        Specifică ca filtrele obiectului să fie procesate imediat în timpul rulării.

    max-page-size=valoare
        Stabilește dimensiunea maximă a paginii de memorie acceptată la valoare.

    mark-plt
    nomark-plt
        Mark PLT entries with dynamic tags, DT_X86_64_PLT, DT_X86_64_PLTSZ and DT_X86_64_PLTENT. Since this option stores a non-zero value in the r_addend field of R_X86_64_JUMP_SLOT relocations, the resulting executables and shared libraries are incompatible with dynamic linkers, such as those in older versions of glibc without the change to ignore r_addend in R_X86_64_GLOB_DAT and R_X86_64_JUMP_SLOT relocations, which don't ignore the r_addend field of R_X86_64_JUMP_SLOT relocations. Supported for x86_64.

    muldefs
        Permite definiții multiple.

    nocopyreloc
        Dezactivează variabilele .dynbss generate de către editorul de legături utilizate în locul variabilelor definite în bibliotecile partajate. Poate duce la realocări dinamice ale textului.

    nodefaultlib
        Specifică ca încărcătorul dinamic să ignore toate rutele implicite de căutare a bibliotecilor atunci când caută dependențele acestui obiect.

    nodelete
        Specificați că obiectul nu trebuie descărcat în timpul rulării.

    nodlopen
        Specifică faptul că obiectul nu este disponibil pentru "dlopen".

    nodump
        Specifică faptul că obiectul nu poate fi descărcat (pentru afișare) de "dldump".

    noexecstack
        Marchează obiectul ca neavând nevoie de stivă executabilă.

    noextern-protected-data
        Don't treat protected data symbols as external when building a shared library. This option overrides the linker backend default. It can be used to work around incorrect relocations against protected data symbols generated by compiler. Updates on protected data symbols by another module aren't visible to the resulting shared library. Supported for i386 and x86-64.

    noreloc-overflow
        Dezactivează verificarea depășirii realocării. Aceasta poate fi utilizată pentru a dezactiva verificarea depășirii realocării dacă nu va exista o depășire dinamică a realocării la momentul rulării. Compatibil pentru x86_64.

    memory-seal
    nomemory-seal
        Instruct the executable or shared library that the all PT_LOAD segments should be sealed to avoid further manipulation (such as changing the protection flags, the segment size, or remove the mapping). This is a security hardening that requires system support. This generates GNU_PROPERTY_MEMORY_SEAL in .note.gnu.property section

    now When generating an executable or shared library, mark it to tell the dynamic linker to resolve all symbols when the program is started, or when the shared library is loaded by dlopen, instead of deferring function call resolution to the point when the function is first called.

    origin
        Specifică faptul că obiectul necesită gestionarea $ORIGIN în rute.

    pack-relative-relocs
    nopack-relative-relocs
        Generate compact relative relocation in position-independent executable and shared library. It adds "DT_RELR", "DT_RELRSZ" and "DT_RELRENT" entries to the dynamic section. It is ignored when building position-dependent executable and relocatable output. nopack-relative-relocs is the default, which disables compact relative relocation. When linked against the GNU C Library, a GLIBC_ABI_DT_RELR symbol version dependency on the shared C Library is added to the output. Supported for i386 and x86-64.

    relro
    norelro
        Create an ELF "PT_GNU_RELRO" segment header in the object. This specifies a memory segment that should be made read-only after relocation, if supported. Specifying common-page-size smaller than the system page size will render this protection ineffective. Don't create an ELF "PT_GNU_RELRO" segment if norelro.

    report-relative-reloc
        Raportează realocările relative dinamice generate de editorul de legături. Este acceptat pentru Linux/i386 și Linux/x86_64.

    sectionheader
    nosectionheader
        Generează antetul secțiunii. Nu se generează antetul secțiunii dacă se utilizează nosectionheader. sectionheader este opțiunea implicită.

    separate-code
    noseparate-code
        Create separate code "PT_LOAD" segment header in the object. This specifies a memory segment that should contain only instructions and must be in wholly disjoint pages from any other data. Don't create separate code "PT_LOAD" segment if noseparate-code is used.

    shstk
        Generează GNU_PROPERTY_X86_FEATURE_1_SHSTK în secțiunea .note.gnu.property pentru a indica compatibilitatea cu Intel Shadow Stack; pentru Linux/i386 și Linux/x86_64.

    stack-size=valoare
        Specifică dimensiunea stivei pentru segmentul ELF "PT_GNU_STACK". Dacă se specifică valoarea zero, aceasta va suprascrie orice creare implicită a segmentului "PT_GNU_STACK" cu o dimensiune diferită de zero.

    start-stop-gc
    nostart-stop-gc
        When --gc-sections is in effect, a reference from a retained section to "__start_SECNAME" or "__stop_SECNAME" causes all input sections named "SECNAME" to also be retained, if "SECNAME" is representable as a C identifier and either "__start_SECNAME" or "__stop_SECNAME" is synthesized by the linker. -z start-stop-gc disables this effect, allowing sections to be garbage collected as if the special synthesized symbols were not defined. -z start-stop-gc has no effect on a definition of "__start_SECNAME" or "__stop_SECNAME" in an object file or linker script. Such a definition will prevent the linker providing a synthesized "__start_SECNAME" or "__stop_SECNAME" respectively, and therefore the special treatment by garbage collection for those references.

    start-stop-visibility=valoare
        Specify the ELF symbol visibility for synthesized "__start_SECNAME" and "__stop_SECNAME" symbols. value must be exactly default, internal, hidden, or protected. If no -z start-stop-visibility option is given, protected is used for compatibility with historical practice. However, it's highly recommended to use -z start-stop-visibility=hidden in new programs and shared libraries so that these symbols are not exported between shared objects, which is not usually what's intended.

    text
    notext
    textoff
        Raportează o eroare dacă DT_TEXTREL este activat, adică dacă obiectul independent de poziție sau obiectul partajat conține realocări dinamice în secțiuni de tip „doar citire”. Nu raportează o eroare dacă notext sau textoff.

    undefs
        Nu raportează referințele la simboluri nerezolvate din fișiere obiect obișnuite, fie la crearea unui executabil, fie la crearea unei biblioteci partajate. Această opțiune este inversă față de -z defs.

    unique-symbol
    nounique-symbol
        Evitarea dublării numelor simbolurilor locale în tabelul șirurilor de simboluri. Adaugă „."number"” la numele simbolurilor locale duplicate dacă se utilizează unique-symbol. nounique-symbol este valoarea implicită.

    x86-64-baseline
    x86-64-v2
    x86-64-v3
    x86-64-v4
        Specify the x86-64 ISA level needed in .note.gnu.property section. x86-64-baseline generates "GNU_PROPERTY_X86_ISA_1_BASELINE". x86-64-v2 generates "GNU_PROPERTY_X86_ISA_1_V2". x86-64-v3 generates "GNU_PROPERTY_X86_ISA_1_V3". x86-64-v4 generates "GNU_PROPERTY_X86_ISA_1_V4". Supported for Linux/i386 and Linux/x86_64.

    isa-level-report=none
    isa-level-report=all
    isa-level-report=needed
    isa-level-report=used
        Specify how to report x86-64 ISA levels in input relocatable files. isa-level-report=none, which is the default, will make the linker not report x86-64 ISA levels in input files. isa-level-report=all will make the linker report needed and used x86-64 ISA levels in input files. isa-level-report=needed will make the linker report needed x86-64 ISA levels in input files. isa-level-report=used will make the linker report used x86-64 ISA levels in input files. Supported for Linux/i386 and Linux/x86_64.

    Alte cuvinte-cheie sunt ignorate pentru compatibilitate cu Solaris.

--gnu-tls-tag
--no-gnu-tls-tag
    Add "GLIBC_ABI_GNU_TLS" version tag dependency in output programs and shared libraries when linking against glibc if input relocatable object files call "___tls_get_addr". The output will fail to load and run at run-time against glibc which doesn't define the "GLIBC_ABI_GNU_TLS" version tag. Unless disabled by the --disable-gnu-tls-tag configure option at the linker build time, when no options are specified, linker will add the "GLIBC_ABI_GNU_TLS" version tag dependency if inputs have "___tls_get_addr" call and libc.so defines the "GLIBC_ABI_GNU_TLS" version tag. Supported for Linux/i386.

--gnu2-tls-tag
--no-gnu2-tls-tag
    Add "GLIBC_ABI_GNU2_TLS" version tag dependency in output programs and shared libraries when linking against glibc if input relocatable object files have "R_386_TLS_DESC_CALL" or "R_X86_64_TLSDESC_CALL" relocation. The output will fail to load and run at run-time against glibc which doesn't define the "GLIBC_ABI_GNU2_TLS" version tag. Unless disabled by the --disable-gnu2-tls-tag configure option at the linker build time, when no options are specified, linker will add the "GLIBC_ABI_GNU2_TLS" version tag dependency if inputs have "R_386_TLS_DESC_CALL" or "R_X86_64_TLSDESC_CALL" relocation and libc.so defines the "GLIBC_ABI_GNU2_TLS" version tag. Supported for Linux/i386 and Linux/x86_64.

-( arhive -)
--start-group archive --end-group
    arhive trebuie să fie o listă de fișiere de arhivă. Acestea pot fi fie nume explicite de fișiere, fie opțiuni -l.

    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 will all be searched repeatedly until all possible references are resolved.

    Utilizarea acestei opțiuni are un impact semnificativ asupra performanței. Este recomandat să o folosiți doar atunci când există referințe circulare inevitabile între două sau mai multe arhive.

--accept-unknown-input-arch
--no-accept-unknown-input-arch
    Tells the linker to accept input files whose architecture cannot be recognised. The assumption is that the user knows what they are doing and deliberately wants to link in these unknown input files. This was the default behaviour of the linker, before release 2.14. The default behaviour from release 2.14 onwards is to reject such input files, and so the --accept-unknown-input-arch option has been added to restore the old behaviour.

--as-needed
--no-as-needed
    This option affects ELF DT_NEEDED tags for dynamic libraries mentioned on the command line after the --as-needed option. Normally the linker will add a DT_NEEDED tag for each dynamic library mentioned on the command line, regardless of whether the library is actually needed or not. --as-needed causes a DT_NEEDED tag to only be emitted for a library that at that point in the link satisfies a non-weak undefined symbol reference from a regular object file or, if the library is not found in the DT_NEEDED lists of other needed libraries, a non-weak undefined symbol reference from another needed dynamic library. Object files or libraries appearing on the command line after the library in question do not affect whether the library is seen as needed. This is similar to the rules for extraction of object files from archives. --no-as-needed restores the default behaviour.

    Notă: În sistemele bazate pe Linux, opțiunea --as-neededed are, de asemenea, un efect asupra comportamentului opțiunilor --rpath și --rpath-link. Pentru mai multe detalii, consultați descrierea opțiunii --rpath-link.

--add-needed
--no-add-needed
    Aceste două opțiuni au fost depreciate din cauza similitudinii numelor lor cu opțiunile --as-needed și --no-as-needed. Ele au fost înlocuite de --copy-dt-needed-entries și --no-copy-dt-needed-entries.

-assert cuvânt-cheie
    Această opțiune este ignorată pentru compatibilitate cu SunOS.

-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 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. 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.

-Bsymbolic
    When creating a shared library, bind references to global symbols to the definition within the shared library, if any. Normally, it is possible for a program linked against a shared library to override the definition within the shared library. This option is only meaningful on ELF platforms which support shared libraries.

-Bsymbolic-functions
    When creating a shared library, bind references to global function symbols to the definition within the shared library, if any. This option is only meaningful on ELF platforms which support shared libraries.

-Bno-symbolic
    Această opțiune poate anula opțiunile -Bsymbolic și -Bsymbolic-functions specificate anterior.

--dynamic-list=fișier-de-listă-dinamică
    Specify the name of a dynamic list file to the linker. This is typically used when creating shared libraries to specify a list of global symbols whose references shouldn't be bound to the definition within the shared library, or creating dynamically linked executables to specify a list of symbols which should be added to the symbol table in the executable. This option is only meaningful on ELF platforms which support shared libraries.

    Formatul listei dinamice este identic cu cel al nodului de versiune, fără domeniul de aplicare și numele nodului. Pentru mai multe informații, consultați VERSION.

--dynamic-list-data
    Include toate simbolurile de date globale în lista dinamică.

--dynamic-list-cpp-new
    Furnizează lista dinamică integrată pentru operatorii C++ „new” și „delete”. Aceasta este utilă în special pentru compilarea bibliotecii libstdc++ partajate.

--dynamic-list-cpp-typeinfo
    Furnizează lista dinamică integrată pentru identificarea tipurilor în timpul rulării în C++.

--check-sections
--no-check-sections
    Solicită editorului de legături să nu verifice adresele secțiunilor după ce acestea au fost alocate pentru a vedea dacă există suprapuneri. În mod normal, editorul de legături va efectua această verificare și, dacă găsește suprapuneri, va produce mesaje de eroare corespunzătoare. Editorul de legături are cunoștință și ține cont de secțiunile care se suprapun. Comportamentul implicit poate fi restabilit prin utilizarea opțiunii din linia de comandă --check-sections. De obicei, suprapunerea secțiunilor nu este verificată pentru legăturile realocabile. Puteți forța verificarea în acest caz folosind opțiunea --check-sections.

--copy-dt-needed-entries
--no-copy-dt-needed-entries
    This option affects the treatment of dynamic libraries referred to by DT_NEEDED tags inside ELF dynamic libraries mentioned on the command line. Normally the linker won't add a DT_NEEDED tag to the output binary for each library mentioned in a DT_NEEDED tag in an input dynamic library. With --copy-dt-needed-entries specified on the command line however any dynamic libraries that follow it will have their DT_NEEDED entries added. The default behaviour can be restored with --no-copy-dt-needed-entries.

    This option also has an effect on the resolution of symbols in dynamic libraries. With --copy-dt-needed-entries dynamic libraries mentioned on the command line will be recursively searched, following their DT_NEEDED tags to other libraries, in order to resolve symbols required by the output binary. With the default setting however the searching of dynamic libraries that follow it will stop with the dynamic library itself. No DT_NEEDED links will be traversed to resolve symbols.

--cref
    Generează un tabel de referințe încrucișate. Dacă se generează un fișier de hartă pentru editorul de legături, tabelul de referințe încrucișate este inclus în fișierul de hartă. În caz contrar, acesta este afișat la ieșirea standard.

    The format of the table is intentionally simple, so that it may be easily processed by a script if necessary. The symbols are printed out, sorted by name. For each symbol, a list of file names is given. If the symbol is defined, the first file listed is the location of the definition. If the symbol is defined as a common value then any files where this happens appear next. Finally any files that reference the symbol are listed.

--ctf-variables
--no-ctf-variables
    The CTF debuginfo format supports a section which encodes the names and types of variables found in the program which do not appear in any symbol table. These variables clearly cannot be looked up by address by conventional debuggers, so the space used for their types and names is usually wasted: the types are usually small but the names are often not. --ctf-variables causes the generation of such a section. The default behaviour can be restored with --no-ctf-variables.

--ctf-share-types=metoda
    Ajustează metoda utilizată pentru partajarea tipurilor între unitățile de conversie în CTF.

    share-unconflicted
        Pune toate tipurile care nu au definiții ambigue în dicționarul comun, unde programele de depanare le pot accesa cu ușurință, chiar dacă acestea apar doar într-o singură unitate de traducere. Aceasta este opțiunea implicită.

    share-duplicated
        Put only types that occur in multiple translation units into the shared dictionary: types with only one definition go into per-translation-unit dictionaries. Types with ambiguous definitions in multiple translation units always go into per-translation-unit dictionaries. This tends to make the CTF larger, but may reduce the amount of CTF in the shared dictionary. For very large projects this may speed up opening the CTF and save memory in the CTF consumer at runtime.

--no-define-common
    Această opțiune împiedică alocarea de adrese simbolurilor comune. Comanda de script "INHIBIT_COMMON_ALLOCATION" are același efect.

    The --no-define-common option allows decoupling the decision to assign addresses to Common symbols from the choice of the output file type; otherwise a non-Relocatable output type forces assigning addresses to Common symbols. Using --no-define-common allows Common symbols that are referenced from a shared library to be assigned addresses only in the main program. This eliminates the unused duplicate space in the shared library, and also prevents any possible confusion over resolving to the wrong duplicate when there are many dynamic modules with specialized search paths for runtime symbol resolution.

--force-group-allocation
    This option causes the linker to place section group members like normal input sections, and to delete the section groups. This is the default behaviour for a final link but this option can be used to change the behaviour of a relocatable link (-r). The script command "FORCE_GROUP_ALLOCATION" has the same effect.

--defsym=simbol=expresia
    Creează un simbol global în fișierul de ieșire, conținând adresa absolută dată de expresie. Puteți utiliza această opțiune de câte ori este necesar pentru a defini mai multe simboluri în linia de comandă. O formă limitată de aritmetică este acceptată pentru expresia în acest context: puteți da o constantă hexazecimală sau numele unui simbol existent, sau puteți utiliza "+" și "-" pentru a adăuga sau a scădea constante hexazecimale sau simboluri. Dacă aveți nevoie de expresii mai elaborate, luați în considerare utilizarea limbajului de comandă pentru editorul de legături dintr-un script. Notă: nu trebuie să existe spațiu alb între simbol, semnul egal („=”) și expresie.

    The linker processes --defsym arguments and -T arguments in order, placing --defsym before -T will define the symbol before the linker script from -T is processed, while placing --defsym after -T will define the symbol after the linker script has been processed. This difference has consequences for expressions within the linker script that use the --defsym symbols, which order is correct will depend on what you are trying to achieve.

--demangle[=stil]
--no-demangle
    These options control whether to demangle symbol names in error messages and other output. When the linker is told to demangle, it tries to present symbol names in a readable fashion: it strips leading underscores if they are used by the object file format, and converts C++ mangled symbol names into user readable names. Different compilers have different mangling styles. The optional demangling style argument can be used to choose an appropriate demangling style for your compiler. The linker will demangle by default unless the environment variable COLLECT_NO_DEMANGLE is set. These options may be used to override the default.

-Ifișier
--dynamic-linker=filșier
    Stabilește numele editorului de legături dinamice. Această opțiune are sens doar atunci când se generează executabile ELF cu legături dinamice. Editorul de legături dinamice implicit este, de obicei, cel potrivit; nu folosi această opțiune decât dacă știi exact ce faci.

--no-dynamic-linker
    When producing an executable file, omit the request for a dynamic linker to be used at load-time. This is only meaningful for ELF executables that contain dynamic relocations, and usually requires entry point code that is capable of processing these relocations.

--embedded-relocs
    Această opțiune este similară cu opțiunea --emit-relocs, cu excepția faptului că realocările sunt stocate într-o secțiune specifică destinației. Această opțiune este acceptată doar de țintele BFIN, CR16 și M68K.

--disable-multiple-abs-defs
    Nu permite definiții multiple cu simboluri incluse în numele fișierului invocat de „-R” sau „--just-symbols”

--fatal-warnings
--no-fatal-warnings
    Tratează toate avertismentele ca erori. Comportamentul implicit poate fi restabilit cu opțiunea --no-fatal-warnings.

-w
--no-warnings
    Nu afișează niciun mesaj de avertizare sau eroare. Această opțiune prevalează asupra opțiunii --fatal-warnings dacă aceasta a fost activată. Această opțiune poate fi utilizată atunci când se știe că binarul de ieșire nu va funcționa, dar este totuși necesar să fie creat.

--force-exe-suffix
    Se asigură că un fișier de ieșire are un sufix .exe.

    If a successfully built fully linked output file does not have a ".exe" or ".dll" suffix, this option forces the linker to copy the output file to one of the same name with a ".exe" suffix. This option is useful when using unmodified Unix makefiles on a Microsoft Windows host, since some versions of Windows won't run an image unless it ends in a ".exe" suffix.

--gc-sections
--no-gc-sections
    Activează colectarea gunoiului din secțiunile de intrare neutilizate. Este ignorată pe țintele care nu acceptă această opțiune. Comportamentul implicit (de a nu efectua această colectare a gunoiului) poate fi restabilit prin specificarea --no-gc-sections în linia de comandă. Rețineți că colectarea gunoiului pentru obiectivele în format COFF și PE este acceptată, dar implementarea este considerată în prezent experimentală.

    --gc-sections decides which input sections are used by examining symbols and relocations. The section containing the entry symbol and all sections containing symbols undefined on the command-line will be kept, as will sections containing symbols referenced by dynamic objects. Note that when building shared libraries, the linker must assume that any visible symbol is referenced. Once this initial set of sections has been determined, the linker recursively marks as used any section referenced by their relocations. See --entry, --undefined, and --gc-keep-exported.

    This option can be set when doing a partial link (enabled with option -r). In this case the root of symbols kept must be explicitly specified either by one of the options --entry, --undefined, or --gc-keep-exported or by a "ENTRY" command in the linker script.

    Ca o extensie GNU, secțiunile de intrare ELF marcate cu fanionul "SHF_GNU_RETAIN" nu vor fi colectate la gunoi.

--print-gc-sections
--no-print-gc-sections
    Listează toate secțiunile eliminate prin colectarea gunoiului. Lista este afișată la ieșirea de eroare standard. Această opțiune este eficientă numai dacă colectarea gunoiului a fost activată prin intermediul opțiunii --gc-sections. Comportamentul implicit (de a nu lista secțiunile care sunt eliminate) poate fi restabilit prin specificarea --no-print-gc-sections în linia de comandă.

--gc-keep-exported
    When --gc-sections is enabled, this option prevents garbage collection of unused input sections that contain global symbols having default or protected visibility. This option is intended to be used for executables where unreferenced sections would otherwise be garbage collected regardless of the external visibility of contained symbols. Note that this option has no effect when linking shared objects since it is already the default behaviour. This option is only supported for ELF format targets.

--print-output-format
    Afișează numele formatului de ieșire implicit (care poate fi influențat de alte opțiuni ale liniei de comandă). Acesta este șirul care ar apărea într-o comandă de tipul "OUTPUT_FORMAT" din scriptul editorului de legături.

--print-memory-usage
    Print used size, total size and used size of memory regions created with the MEMORY command. This is useful on embedded targets to have a quick view of amount of free memory. The format of the output has one headline and one line per region. It is both human readable and easily parsable by tools. Here is an example of an output:

      Regiunea de memorie    Dim. utilizată Dim. regiune  Utiliz. %
                         ROM:        256 KB         1 MB     25.00%
                         RAM:          32 B         2 GB      0.00%

    Notă: dacă doriți să aflați informații despre utilizarea memoriei de către editorul de legături, puteți folosi opțiunea --stats.

--help
    Afișează un rezumat al opțiunilor liniei de comandă la ieșirea standard și apoi iese.

--target-help
    Afișează un rezumat al tuturor opțiunilor specifice țintei la ieșirea standard și apoi iese.

-Map=fișier-hartă
    Imprimă o hartă de legături către fișierul fișier-hartă. Consultați descrierea opțiunii -M de mai sus. Dacă fișier-hartă este doar caracterul „-”, atunci harta va fi scrisă la ieșirea standard.

    Specifying a directory as mapfile causes the linker map to be written as a file inside the directory. Normally name of the file inside the directory is computed as the basename of the output file with ".map" appended. If however the special character "%" is used then this will be replaced by the full path of the output file. Additionally if there are any characters after the % symbol then ".map" will no longer be appended.

             -o foo.exe -Map=bar                  [Creates ./bar]
             -o ../dir/foo.exe -Map=bar           [Creates ./bar]
             -o foo.exe -Map=../dir               [Creates ../dir/foo.exe.map]
             -o ../dir2/foo.exe -Map=../dir       [Creează ../dir/foo.exe.map]
             -o foo.exe -Map=%                    [Creează ./foo.exe.map]
             -o ../dir/foo.exe -Map=%             [Creează ../dir/foo.exe.map]
             -o foo.exe -Map=%.bar                [Creează ./foo.exe.bar]
             -o ../dir/foo.exe -Map=%.bar         [Creează ../dir/foo.exe.bar]
             -o ../dir2/foo.exe -Map=../dir/%     [Creează ../dir/../dir2/foo.exe.map]
             -o ../dir2/foo.exe -Map=../dir/%.bar [Creează ../dir/../dir2/foo.exe.bar]

    Este o eroare dacă se specifică mai mult de un caracter „%”.

    Dacă fișierul-hartă există deja, acesta va fi suprascris în urma acestei operații.

--no-keep-memory
    ld normally optimizes for speed over memory usage by caching the symbol tables of input files in memory. This option tells ld to instead optimize for memory usage, by rereading the symbol tables as necessary. This may be required if ld runs out of memory space while linking a large executable.

--no-undefined
-z defs
    Report unresolved symbol references from regular object files. This is done even if the linker is creating a non-symbolic shared library. The switch --[no-]allow-shlib-undefined controls the behaviour for reporting unresolved references found in shared libraries being linked in.

    Efectele acestei opțiuni pot fi inversate folosind "-z undefs").

--allow-multiple-definition
-z muldefs
    În mod normal, atunci când un simbol este definit de mai multe ori, editorul de legături va raporta o eroare fatală. Aceste opțiuni permit definiții multiple, iar prima definiție va fi utilizată.

--allow-shlib-undefined
--no-allow-shlib-undefined
    Permite sau nu permite simboluri nedefinite în bibliotecile partajate. Această opțiune este similară cu --no-undefined, cu excepția faptului că determină comportamentul în cazul în care simbolurile nedefinite se află într-o bibliotecă partajată și nu într-un fișier obiect obișnuit. Nu afectează modul în care sunt tratate simbolurile nedefinite din fișierele de obiecte obișnuite.

    The default behaviour is to report errors for any undefined symbols referenced in shared libraries if the linker is being used to create an executable, but to allow them if the linker is being used to create a shared library.

    Motivele pentru care se permit referințele la simboluri nedefinite în bibliotecile partajate specificate în momentul legării sunt următoarele:

    •   Este posibil ca o bibliotecă partajată specificată în momentul vinculării să nu fie aceeași cu cea care este disponibilă în momentul încărcării, astfel încât simbolul ar putea fi de fapt rezolvabil în momentul încărcării.

    •   Există unele sisteme de operare, cum ar fi BeOS și HPPA, în care prezența simbolurilor nedefinite în bibliotecile partajate este ceva normal.

        The BeOS kernel for example patches shared libraries at load time to select whichever function is most appropriate for the current architecture. This is used, for example, to dynamically select an appropriate memset function.

--error-handling-script=nume-script
    If this option is provided then the linker will invoke scriptname whenever an error is encountered. Currently however only two kinds of error are supported: missing symbols and missing libraries. Two arguments will be passed to script: the keyword "undefined-symbol" or `missing-lib" and the name of the undefined symbol or missing library. The intention is that the script will provide suggestions to the user as to where the symbol or library might be found. After the script has finished then the normal linker error message will be displayed.

    Disponibilitatea acestei opțiuni este controlată de un comutator de configurare a timpului, astfel încât este posibil să nu fie prezentă în anumite implementări.

--no-undefined-version
    În mod normal, atunci când un simbol are o versiune nedefinită, editorul de legături îl va ignora. Această opțiune nu permite simbolurile cu versiune nedefinită și, în schimb, va fi emisă o eroare fatală.

--default-symver
    Creează și utilizează o versiune implicită a simbolului (soname) pentru simbolurile exportate fără versiune.

--default-imported-symver
    Creează și utilizează o versiune implicită a simbolului (soname) pentru simbolurile importate fără versiune.

--no-warn-mismatch
    Normally ld will give an error if you try to link together input files that are mismatched for some reason, perhaps because they have been compiled for different processors or for different endiannesses. This option tells ld that it should silently permit such possible errors. This option should only be used with care, in cases when you have taken some special action that ensures that the linker errors are inappropriate.

--no-warn-search-mismatch
    În mod normal, ld va da un avertisment dacă găsește o bibliotecă incompatibilă în timpul căutării bibliotecii. Această opțiune silențiază avertismentul.

--no-whole-archive
    Dezactivează efectul opțiunii --whole-archive pentru fișierele de arhivă ulterioare.

--noinhibit-exec
    Retain the executable output file whenever it is still usable. Normally, the linker will not produce an output file if it encounters errors during the link process; it exits without writing an output file when it issues any error whatsoever.

-nostdlib
    Caută numai în directoarele de biblioteci specificate în mod explicit în linia de comandă. Directoarele de biblioteci specificate în scripturile editorului de legături (inclusiv cele specificate în linia de comandă) sunt ignorate.

--oformat=format-ieșire
    ld may be configured to support more than one kind of object file. If your ld is configured this way, you can use the --oformat option to specify the binary format for the output object file. Even when ld is configured to support alternative object formats, you don't usually need to specify this, as ld should be configured to produce as a default output format the most usual format on each machine. output-format is a text string, the name of a particular format supported by the BFD libraries. (You can list the available binary formats with objdump -i.) The script command "OUTPUT_FORMAT" can also specify the output format, but this option overrides it.

--out-implib fișier
    Creează o bibliotecă de import în fișier corespunzătoare executabilului generat de editorul de legături (de exemplu, un program DLL sau ELF). Această bibliotecă de import (care ar trebui să se numească "*.dll.a" sau "*.a" pentru DLL-uri) poate fi utilizată pentru vincularea clienților cu executabilul generat; acest comportament face posibilă omiterea unei etape separate de creare a bibliotecii de import (de exemplu, "dlltool" pentru DLL-uri). Această opțiune este disponibilă numai pentru adaptările vizate i386 PE și ELF ale editorului de legături.

-pie
--pic-executable
    Creează un executabil independent de poziție. Acest lucru este acceptat în prezent numai pe platformele ELF. Executabilele independente de poziție sunt realocate de către editorul de legături dinamice la adresa virtuală aleasă de sistemul de operare pentru acestea, care poate varia de la o invocare la alta. Ele sunt marcate ET_DYN în antetul fișierului ELF, dar diferă de bibliotecile partajate în mai multe moduri. În special, simbolurile definite în mod implicit într-un PIE nu pot fi înlocuite de un alt obiect, așa cum se poate întâmpla într-o bibliotecă partajată.

-no-pie
    Creează un executabil dependent de poziție. Aceasta este opțiunea implicită.

-qmagic
    Această opțiune este ignorată pentru compatibilitate cu Linux.

-Qy Această opțiune este ignorată pentru compatibilitate cu SVR4.

--relax
--no-relax
    O opțiune cu efecte dependente de mașină. Această opțiune este suportată doar pe câteva obiective-țintă.

    On some platforms the --relax option performs target specific, global optimizations that become possible when the linker resolves addressing in the program, such as relaxing address modes, synthesizing new instructions, selecting shorter version of current instructions, and combining constant values.

    On some platforms these link time global optimizations may make symbolic debugging of the resulting executable impossible. This is known to be the case for the Matsushita MN10200 and MN10300 family of processors.

    Pe platformele care acceptă această caracteristică, opțiunea --no-relax o va dezactiva.

    Pe platformele care nu acceptă această caracteristică, atât --relax, cât și --no-relax sunt acceptate, dar ignorate.

--retain-symbols-file=nume-fișier
    Retain only the symbols listed in the file filename, discarding all others. filename is simply a flat file, with one symbol name per line. This option is especially useful in environments (such as VxWorks) where a large global symbol table is accumulated gradually, to conserve run-time memory.

    --retain-symbols-file nu elimină simbolurile nedefinite sau simbolurile necesare pentru realocări.

    Puteți specifica --retain-symbols-file doar o singură dată în linia de comandă. Aceasta prevalează asupra lui -s și -S.

-rpath=director
    Adaugă un director la ruta de căutare a bibliotecii de execuție. Acest lucru este utilizat atunci când se leagă un executabil ELF cu obiecte partajate. Toate argumentele -rpath sunt concatenate și transmise editorului de legături în timp de execuție, care le utilizează pentru a localiza obiectele partajate în timpul execuției.

    The -rpath option is also used when locating shared objects which are needed by shared objects explicitly included in the link; see the description of the -rpath-link option. Searching -rpath in this way is only supported by native linkers and cross linkers which have been configured with the --with-sysroot option.

    Dacă opțiunea -rpath nu este utilizată la legarea unui executabil ELF, se va folosi conținutul variabilei de mediu "LD_RUN_PATH", dacă aceasta este definită.

    The -rpath option may also be used on SunOS. By default, on SunOS, the linker will form a runtime search path out of all the -L options it is given. If a -rpath option is used, the runtime search path will be formed exclusively using the -rpath options, ignoring the -L options. This can be useful when using gcc, which adds many -L options which may be on NFS mounted file systems.

    Pentru compatibilitate cu alți editori de legături ELF, dacă opțiunea -R este urmată de un nume de director, în loc de un nume de fișier, aceasta este tratată ca opțiunea -rpath.

-rpath-link=director
    Atunci când se utilizează ELF sau SunOS, o bibliotecă partajată poate necesita o altă bibliotecă. Acest lucru se întâmplă atunci când o legătură "ld -shared" include o bibliotecă partajată printre fișierele de intrare.

    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, several directories are searched as described below. The -rpath-link option specifies the first set of directories to search. This option may specify a sequence of directory names either by providing a list of names separated by colons, or by appearing multiple times.

    The tokens $ORIGIN and $LIB can appear in these search directories. They will be replaced by the full path to the directory containing the program or shared object in the case of $ORIGIN and either lib - for 32-bit binaries - or lib64 - for 64-bit binaries - in the case of $LIB.

    Forma alternativă a acestor jetoane - ${ORIGIN} și ${LIB} - poate fi, de asemenea, utilizată. Jetoanele $PLATFORM nu sunt acceptate.

    The --rpath-link 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 unintentionally use a different search path than the runtime linker would have used.

    When additional shared libraries are required, the linker will search directories in the order listed below in order to find them. Note however that this only applies to additional libraries needed to satisfy already included shared libraries. It does not apply to libraries that are included via the -l command line option. Searches for -l libraries are only conducted in directories specified by the -L option.

    1.  Orice directoare specificate prin opțiunile -rpath-link.

    2.  Orice directoare specificate prin opțiunile -rpath. Diferența dintre -rpath și -rpath-link constă în faptul că directoarele specificate prin opțiunile -rpath sunt incluse în executabil și utilizate în timpul execuției, în timp ce opțiunea -rpath-link este eficientă numai în timpul vinculării. Căutarea -rpath în acest mod este acceptată numai de către editorii de legături nativi și de editorii de legături încrucișate care au fost configurați cu opțiunea --with-sysroot.

    3.  Pe un sistem ELF, în cazul editorilor de legături nativi, dacă opțiunile -rpath și -rpath-link nu au fost utilizate, se caută în conținutul variabilei de mediu "LD_RUN_PATH".

    4.  Pe SunOS, dacă nu a fost utilizată opțiunea -rpath, se caută în toate directoarele specificate cu ajutorul opțiunilor -L.

    5.  Pentru un editor de legături nativ, caută conținutul variabilei de mediu "LD_LIBRARY_PATH".

    6.  Pentru un editor de legături ELF nativ, directoarele din "DT_RUNPATH" sau "DT_RPATH" ale unei biblioteci partajate sunt căutate pentru bibliotecile partajate necesare acesteia. Intrările "DT_RPATH" sunt ignorate dacă există intrări "DT_RUNPATH".

    7.  Pentru un editor de legături pentru un sistem Linux, dacă fișierul /etc/ld.so.conf există, listează directoarele găsite în acel fișier. Notă: ruta către acest fișier este prefixată cu valoarea "sysroot", dacă aceasta este definită, și apoi cu orice șir "prefix", dacă editorul de legături a fost configurat cu opțiunea --prefix=<ruta>.

    8.  Pentru un editor de legături nativ pe un sistem FreeBSD, orice directoare specificate de macrocomanda "_PATH_ELF_HINTS" definită în fișierul antet elf-hints.h.

    9.  Orice directoare specificate de o comandă "SEARCH_DIR" într-un script de editare de legături dat în linia de comandă, inclusiv scripturile specificate de -T (dar nu și de -dT).

    10. Directoarele implicite, în mod normal /lib și /usr/lib.

    11. Orice directoare specificate de un modul LDPT_SET_EXTRA_LIBRARY_PATH.

    12. Orice directoare specificate de o comandă "SEARCH_DIR" într-un script de editare de legături implicit.

    Note however on Linux based systems there is an additional caveat: If the --as-needed option is active and a shared library is located which would normally satisfy the search and this library does not have DT_NEEDED tag for libc.so and there is a shared library later on in the set of search directories which also satisfies the search and this second shared library does have a DT_NEEDED tag for libc.so then the second library will be selected instead of the first.

    Dacă biblioteca partajată necesară nu este găsită, editorul de legături va emite un avertisment și va continua procesul de legare.

--section-ordering-file=nume-script
    This option is used to augment the current linker script with additional mapping of input sections to output sections. This file must use the same syntax for "SECTIONS" as is used in normal linker scripts, but it should not do anything other than place input sections into output sections. @pxref{SECTIONS}

    O a doua constrângere asupra scriptului de ordonare a secțiunilor este că acesta poate face referire numai la secțiunile de ieșire care sunt deja definite de scriptul editorului de legături utilizat în prezent; (de exemplu, scriptul editorului de legături implicit sau un script specificat în linia de comandă). Cu toate acestea, avantajul scriptului de ordonare a secțiunilor este că secțiunile de intrare sunt puse la începutul secțiunilor de ieșire, astfel încât să poată asigura ordonarea secțiunilor în secțiunea de ieșire. De exemplu, imaginați-vă că scriptul editorului de legături implicit arată astfel:

            SECTIONS {
              .text : { *(.text.hot) ; *(.text .text.*) }
              .data : { *(.data.big) ; *(.data .data.*) }
              }

    Atunci, dacă se utilizează un fișier de ordonare a secțiunilor precum acesta:

              .text : { *(.text.first) ; *(.text.z*) }
              .data : { foo.o(.data.first) ; *(.data.small) }

    Acesta ar echivala cu un script de editor de legături precum acesta:

            SECTIONS {
              .text : { *(.text.first) ; *(.text.z*) ; *(.text.hot) ; *(.text .text.*) }
              .data : { foo.o(.data.first) ; *(.data.small) ; *(.data.big) ; *(.data .data.*) }
              }

    Avantajul fișierului de ordonare a secțiunilor este că poate fi folosit pentru a ordona secțiunile care prezintă interes pentru utilizator, fără a fi nevoie să se țină cont de alte secțiuni, de regiuni de memorie sau de orice alt aspect.

-shared
-Bshareable
    Creează o bibliotecă partajată. Acest lucru este acceptat în prezent numai pe platformele ELF, XCOFF și SunOS. Pe SunOS, editorul va crea automat o bibliotecă partajată dacă opțiunea -e nu este utilizată și există simboluri nedefinite în legătură.

--sort-common
--sort-common=ascending
--sort-common=descending
    This option tells ld to sort the common symbols by alignment in ascending or descending order when it places them in the appropriate output sections. The symbol alignments considered are sixteen-byte or larger, eight-byte, four-byte, two-byte, and one-byte. This is to prevent gaps between symbols due to alignment constraints. If no sorting order is specified, then descending order is assumed.

--sort-section=nume
    Această opțiune va aplica "SORT_BY_NAME" tuturor modelelor de secțiuni cu caractere joker din scriptul editorului de legături.

--sort-section=alinierea
    Această opțiune va aplica "SORT_BY_ALIGNMENT" tuturor modelelor de secțiuni cu caractere joker din scriptul editorului de legături.

--spare-dynamic-tags=număr
    Această opțiune specifică numărul de sloturi goale care trebuie lăsate în secțiunea .dynamic a obiectelor partajate ELF. Sloturile goale pot fi necesare pentru instrumentele de post-procesare, cum ar fi pre-editorul de legături. Valoarea implicită este 5.

--split-by-file[=dimensiunea]
    Similară cu --split-by-reloc, dar creează o nouă secțiune de ieșire pentru fiecare fișier de intrare atunci când se atinge valoarea dimensiunea. Dacă nu este specificată, valoarea implicită pentru dimensiunea este 1.

--split-by-reloc[=număr]
    Tries to creates extra sections in the output file so that no single output section in the file contains more than count relocations. This is useful when generating huge relocatable files for downloading into certain real time kernels with the COFF object file format; since COFF cannot represent more than 65535 relocations in a single section. Note that this will fail to work with object file formats which do not support arbitrary sections. The linker will not split up individual input sections for redistribution, so if a single input section contains more than count relocations one output section will contain that many relocations. count defaults to a value of 32768.

--stats[=nume-fișier]
    Calculează și afișează statistici despre funcționarea editorului de legături, cum ar fi timpul de execuție și utilizarea memoriei.

    If the optional filename argument is not supplied then only basic information is reported, and it is sent to the standard error output stream. If the filename argument is supplied then extended information is written to the named file. If filename is set to just the - symbol, then the extended information is sent to the standard output stream. If the filename starts with + then the file is opened in append mode rather than overwrite mode.

    If the -Map option has been enabled then the information is also recorded in the map file as well. Note: if both the --stats option and the -Map options have been given filename arguments and they match, then the information will only be written out once not twice.

    If the "LD_STATS" environment variable is defined then this behaves likes the --stats option. If the variable's value is a string then this will used as the name of a file into which the information should be recorded. Otherwise the information will be sent to the standard output stream. Using the environment variable allows stats to be recorded without having to alter the linker's command line. Note: if both the environment variable and the --stats option are used then the --stats option takes precedence.

    The extended information reported includes the cpu time used and, if the getrusage() system library call is available then maximum set size and the user and system run times as well. In addition if the mallinfo or mallinfo2 system library calls are available then the total memory usage is reported,

    The information is displayed for individual parts of the linking process which are referred to as phases. Note that individual phases can contain or overlap with each other so it should not be assumed that the overall resources used by the linker is the sum of the resources used by the individual phases.

    În plus, informațiile sunt prezentate și pentru o fază specială denumită ALL, care acoperă întregul proces de legare.

    When extended information is being reported the linker version, command line arguments and linker start time are also included. This makes it easier to handle the situation where multiple links are being invoked by a build system and to indentify exactly which arguments were responsible for producing the statistics that are reported.

    Ieșirea extinsă arată cam așa:

            Stats: linker version: (GNU Binutils) 2.44.50.20250401
            Stats: linker started: Wed Apr  2 09:36:41 2025
            Stats: args: ld -z norelro -z nomemory-seal -z no-separate-code -o a.out [...]

            Stats: phase               cpu time       rss      user time    system time     memory
            Stats: name                (microsec)   (KiB)      (seconds)      (seconds)      (KiB)
            Stats: ALL                   390082    217740              0              0   25219440
            Stats: ctf processing            12         0              0              0          0
            Stats: string merge            1324         0              0              0     406544
            Stats: parsing                  349       288              0              0     119792
            Stats: plugins                    1         0              0              0          0
            Stats: processing files      259616    214524              0              0   31569120
            Stats: write                 116493         0              0              0      48096

--no-stats
    Dezactivează raportarea statisticilor de utilizare, în cazul în care aceasta a fost activată prin opțiunea de linie de comandă --stats sau prin variabila de mediu LD_STATS.

--sysroot=director
    Utilizează director ca locație pentru sysroot, suprascriind valoarea implicită stabilită în timpul configurării. Această opțiune este acceptată doar de editorii de legături care au fost configurați folosind opțiunea --with-sysroot.

--task-link
    Această opțiune este utilizată de țintele bazate pe COFF/PE pentru a crea un fișier obiect legat de sarcină în care toate simbolurile globale au fost convertite în simboluri statice.

--traditional-format
    Pentru unele ținte, rezultatul ld este diferit în anumite moduri de rezultatul unui editor de legături existent. Această opțiune solicită ld să utilizeze în schimb formatul tradițional.

    For example, on SunOS, ld combines duplicate entries in the symbol string table. This can reduce the size of an output file with full debugging information by over 30 percent. Unfortunately, the SunOS "dbx" program can not read the resulting program ("gdb" has no trouble). The --traditional-format switch tells ld to not combine duplicate entries.

--section-start=nume-secțiune=org
    Locate a section in the output file at the absolute address given by org. You may use this option as many times as necessary to locate multiple sections in the command line. org must be a single hexadecimal integer; for compatibility with other linkers, you may omit the leading 0x usually associated with hexadecimal values. Note: there should be no white space between sectionname, the equals sign ("="), and org.

--image-base=org
    Atunci când se utilizează ELF, la fel ca în cazul -Ttext-segment, ambele opțiuni stabilesc efectiv adresa de bază a executabilului ELF.

    Când se utilizează PE, utilizează valoarea ca adresă de bază a programului sau dll-ului. Aceasta este cea mai mică locație de memorie care va fi utilizată atunci când programul sau dll-ul dvs. este încărcat. Pentru a reduce nevoia de realocare și pentru a îmbunătăți performanța dll-urilor dvs., fiecare ar trebui să aibă o adresă de bază unică și să nu se suprapună peste alte dll-uri. Valoarea implicită este 0x400000 pentru executabile și 0x10000000 pentru dll-uri.

-Tbss=org
-Tdata=org
-Ttext=org
    La fel ca --section-start, cu ".bss", ".data" sau ".text" ca nume-secțiune.

-Ttext-segment=org
    When creating an ELF executable, it will set the address of the first byte of the first segment. Note that when -pie is used with -Ttext-segment=org, the output executable is marked ET_EXEC so that the address of the first byte of the text segment will be guaranteed to be org at run time.

-Trodata-segment=org
    When creating an ELF executable or shared object for a target where the read-only data is in its own segment separate from the executable text, it will set the address of the first byte of the read-only data segment.

-Tldata-segment=org
    Atunci când se creează un fișier executabil ELF sau un obiect partajat pentru modelul de memorie mediu x86-64, se va stabili adresa primului octet al segmentului ldata.

--unresolved-symbols=metoda
    Determină modul de tratare a simbolurilor nerezolvate. Există patru valori posibile pentru metodă:

    ignore-all
        Nu raportează niciun simbol nerezolvat.

    report-all
        Raportează toate simbolurile nerezolvate. Aceasta este valoarea implicită.

    ignore-in-object-files
        Raportează simbolurile nerezolvate conținute în bibliotecile partajate, dar le ignoră dacă provin din fișiere obiect obișnuite.

    ignore-in-shared-libs
        Report unresolved symbols that come from regular object files, but ignore them if they come from shared libraries. This can be useful when creating a dynamic binary and it is known that all the shared libraries that it should be referencing are included on the linker's command line.

    Comportamentul bibliotecilor partajate poate fi controlat și prin opțiunea --[no-]allow-shlib-undefined.

    În mod normal, editorul de legături va genera un mesaj de eroare pentru fiecare simbol nerezolvat raportat, dar opțiunea --warn-unresolved-symbols poate schimba acest lucru într-un avertisment.

--dll-verbose
--verbose[=NUMĂR]
    Afișează numărul versiunii pentru ld și enumeră emulările editorului de legături acceptate. Afișează fișierele de intrare care pot sau nu pot fi deschise. Afișează scriptul editor de legături utilizat de editorul de legături. Dacă argumentul opțional NUMĂR > 1, va fi afișată și starea simbolului modulului.

--version-script=versiunea-fișier-script
    Specify the name of a version script to the linker. This is typically used when creating shared libraries to specify additional information about the version hierarchy for the library being created. This option is only fully supported on ELF platforms which support shared libraries; see VERSION. It is partially supported on PE platforms, which can use version scripts to filter symbol visibility in auto-export mode: any symbols marked local in the version script will not be exported.

--warn-common
    Warn when a common symbol is combined with another common symbol or with a symbol definition. Unix linkers allow this somewhat sloppy practice, but linkers on some other operating systems do not. This option allows you to find potential problems from combining global symbols. Unfortunately, some C libraries use this practice, so you may get some warnings about symbols in the libraries as well as in your programs.

    Există trei tipuri de simboluri globale, ilustrate aici prin exemple în limbajul C:

    int i = 1;
        O definiție, care se introduce în secțiunea de date inițializate a fișierului de ieșire.

    extern int i;
        O referință nedefinită, care nu alocă spațiu. Trebuie să existe undeva fie o definiție, fie un simbol comun pentru variabila respectivă.

    int i;
        Un simbol comun. În cazul în care există doar (unul sau mai multe) simboluri comune pentru o variabilă, aceasta este plasată în zona de date neinițializate din fișierul de ieșire. Editorul de legături unește mai multe simboluri comune pentru aceeași variabilă într-un singur simbol. În cazul în care acestea au dimensiuni diferite, alege cea mai mare dimensiune. Editorul de legături transformă un simbol comun într-o declarație, în cazul în care există o definiție a aceleiași variabile.

    The --warn-common option can produce five kinds of warnings. Each warning consists of a pair of lines: the first describes the symbol just encountered, and the second describes the previous symbol encountered with the same name. One or both of the two symbols will be a common symbol.

    1.  Transformarea unui simbol obișnuit într-o referință, deoarece există deja o definiție pentru acest simbol.

                <file>(<section>): avertisment: „common” din `<simbol>'
                   este suprascris de definiție
                <file>(<section>): avertisment: definit aici

    2.  Turning a common symbol into a reference, because a later definition for the symbol is encountered. This is the same as the previous case, except that the symbols are encountered in a different order.

                <file>(<section>): warning: definition of `<symbol>'
                   overriding common
                <file>(<section>): warning: common is here

    3.  Fuzionarea unui simbol comun cu un simbol comun anterior de aceeași dimensiune.

                <file>(<section>): warning: multiple common
                   of `<symbol>'
                <file>(<section>): warning: previous common is here

    4.  Fuzionarea unui simbol comun cu un simbol comun anterior, mai mare.

                <file>(<section>): warning: common of `<symbol>'
                   overridden by larger common
                <file>(<section>): warning: larger common is here

    5.  Fuzionarea unui simbol comun cu un simbol comun anterior, mai mic. Este vorba despre același lucru ca în cazul anterior, cu excepția faptului că simbolurile apar într-o ordine diferită.

                <file>(<section>): warning: common of `<symbol>'
                   overriding smaller common
                <file>(<section>): warning: smaller common is here

--warn-constructors
    Avertizează dacă se utilizează constructori globali. Această opțiune este utilă doar pentru câteva formate de fișiere obiect. În cazul formatelor precum COFF sau ELF, editorul de legături nu poate detecta utilizarea constructorilor globali.

--warn-execstack
--warn-execstack-objects
--no-warn-execstack
    Pe platformele ELF, editorul de legături poate genera mesaje de avertizare dacă i se cere să creeze un fișier de ieșire care conține o stivă executabilă. Există trei stări posibile:

    1.  Nu generează niciun avertisment.

    2.  Generează întotdeauna avertismente, chiar dacă stiva executabilă este solicitată prin intermediul opțiunii de linie de comandă -z execstack.

    3.  Se generează o avertizare doar dacă un fișier obiect solicită o stivă de execuție, dar nu și dacă se utilizează opțiunea -z execstack.

    The default state depends upon how the linker was configured when it was built. The --no-warn-execstack option always puts the linker into the no-warnings state. The --warn-execstack option puts the linker into the warn-always state. The --warn-execstack-objects option puts the linker into the warn-for-object-files-only state.

    Note: ELF format input files can specify that they need an executable stack by having a .note.GNU-stack section with the executable bit set in its section flags. They can specify that they do not need an executable stack by having the same section, but without the executable flag bit set. If an input file does not have a .note.GNU-stack section then the default behaviour is target specific. For some targets, then absence of such a section implies that an executable stack is required. This is often a problem for hand crafted assembler files.

--error-execstack
--no-error-execstack
    If the linker is going to generate a warning message about an executable stack then the --error-execstack option will instead change that warning into an error. Note - this option does not change the linker's execstack warning generation state. Use --warn-execstack or --warn-execstack-objects to set a specific warning state.

    Opțiunea --no-error-execstack va restabili comportamentul implicit de generare a mesajelor de avertizare.

--warn-multiple-gp
    Warn if multiple global pointer values are required in the output file. This is only meaningful for certain processors, such as the Alpha. Specifically, some processors put large-valued constants in a special section. A special register (the global pointer) points into the middle of this section, so that constants can be loaded efficiently via a base-register relative addressing mode. Since the offset in base-register relative mode is fixed and relatively small (e.g., 16 bits), this limits the maximum size of the constant pool. Thus, in large programs, it is often necessary to use multiple global pointer values in order to be able to address all possible constants. This option causes a warning to be issued whenever this case occurs.

--warn-once
    Afișează o singură avertizare pentru fiecare simbol nedefinit, în loc de câte una pentru fiecare modul care face referire la acesta.

--warn-rwx-segments
--no-warn-rwx-segments
    Warn if the linker creates a loadable, non-zero sized segment that has all three of the read, write and execute permission flags set. Such a segment represents a potential security vulnerability. In addition warnings will be generated if a thread local storage segment is created with the execute permission flag set, regardless of whether or not it has the read and/or write flags set.

    Aceste avertismente sunt activate în mod implicit. Ele pot fi dezactivate prin opțiunea --no-warn-rwx-segments și reactivate prin opțiunea --warn-rwx-segments.

--error-rwx-segments
--no-error-rwx-segments
    If the linker is going to generate a warning message about an executable, writeable segment, or an executable TLS segment, then the --error-rwx-segments option will turn this warning into an error instead. The --no-error-rwx-segments option will restore the default behaviour of just generating a warning message.

    Note - the --error-rwx-segments option does not by itself turn on warnings about these segments. These warnings are either enabled by default, if the linker was configured that way, or via the --warn-rwx-segments command line option.

--warn-section-align
    Warn if the address of an output section is changed because of alignment. Typically, the alignment will be set by an input section. The address will only be changed if it not explicitly specified; that is, if the "SECTIONS" command does not specify a start address for the section.

--warn-textrel
    Afișează un avertisment dacă editorul de legături adaugă DT_TEXTREL la un executabil independent de poziție sau la un obiect partajat.

--warn-alternate-em
    Avertizează dacă un obiect are un cod mașină ELF alternativ.

--warn-unresolved-symbols
    Dacă editorul de legături urmează să semnaleze un simbol nerezolvat (vezi opțiunea --unresolved-symbols), acesta va genera, în mod normal, o eroare. Această opțiune face ca acesta să genereze, în schimb, un avertisment.

--error-unresolved-symbols
    Aceasta restabilește comportamentul implicit al editorului de legături, de a genera erori atunci când semnalează simboluri nerezolvate.

--whole-archive
    For each archive mentioned on the command line after the --whole-archive option, include every object file in the archive in the link, rather than searching the archive for the required object files. This is normally used to turn an archive file into a shared library, forcing every object to be included in the resulting shared library. This option may be used more than once.

    Two notes when using this option from gcc: First, gcc doesn't know about this option, so you have to use -Wl,-whole-archive. Second, don't forget to use -Wl,-no-whole-archive after your list of archives, because gcc will add its own list of archives to your link and you may not want this flag to affect those as well.

--wrap=simbol
    Use a wrapper function for symbol. Any undefined reference to symbol will be resolved to "__wrap_symbol". Any undefined reference to "__real_symbol" will be resolved to symbol.

    This can be used to provide a wrapper for a system function. The wrapper function should be called "__wrap_symbol". If it wishes to call the system function, it should call "__real_symbol".

    Iată un exemplu banal:

            void *
            __wrap_malloc (size_t c)
            {
              printf ("malloc called with %zu\n", c);
              return __real_malloc (c);
            }

    If you link other code with this file using --wrap malloc, then all calls to "malloc" will call the function "__wrap_malloc" instead. The call to "__real_malloc" in "__wrap_malloc" will call the real "malloc" function.

    You may wish to provide a "__real_malloc" function as well, so that links without the --wrap option will succeed. If you do this, you should not put the definition of "__real_malloc" in the same file as "__wrap_malloc"; if you do, the assembler may resolve the call before the linker has a chance to wrap it to "malloc".

    Only undefined references are replaced by the linker. So, translation unit internal references to symbol are not resolved to "__wrap_symbol". In the next example, the call to "f" in "g" is not resolved to "__wrap_f".

            int
            f (void)
            {
              return 123;
            }

            int
            g (void)
            {
              return f();
            }

--eh-frame-hdr
--no-eh-frame-hdr
    Solicită (--eh-frame-hdr) sau suprimă (--no-eh-frame-hdr) crearea secțiunii ".eh_frame_hdr" și a antetului segmentului ELF "PT_GNU_EH_FRAME".

--no-ld-generated-unwind-info
    Solicită generarea informațiilor de derulare ".eh_frame" pentru secțiunile de cod generate de editorul de legături, cum ar fi PLT. Această opțiune este activată implicit dacă sunt acceptate informațiile de derulare generate de editorul de legături.

--discard-sframe
    Elimină informațiile privind urmărirea stivei ".sframe" de la ieșire. Această opțiune interzice, de asemenea, crearea datelor de urmărire a stivei SFrame pentru secțiunile de cod generate de editorul de legături, cum ar fi PLT. Această opțiune este dezactivată în mod implicit.

--enable-new-dtags
--disable-new-dtags
    This linker can create the new dynamic tags in ELF. But the older ELF systems may not understand them. If you specify --enable-new-dtags, the new dynamic tags will be created as needed and older dynamic tags will be omitted. If you specify --disable-new-dtags, no new dynamic tags will be created. By default, the new dynamic tags are not created. Note that those options are only available for ELF systems.

--hash-size=număr
    Set the default size of the linker's hash tables to a prime number close to number. Increasing this value can reduce the length of time it takes the linker to perform its tasks, at the expense of increasing the linker's memory requirements. Similarly reducing this value can reduce the memory requirements at the expense of speed. The default value is 4051 under normal circumstances and 1021 if the --reduce-memory-overheads command line option is used.

--hash-style=stil
    Set the type of linker's hash table(s). style can be either "sysv" for classic ELF ".hash" section, "gnu" for new style GNU ".gnu.hash" section or "both" for both the classic ELF ".hash" and new style GNU ".gnu.hash" hash tables. The default depends upon how the linker was configured, but for most Linux based systems it will be "both".

--compress-debug-sections=none
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
--compress-debug-sections=zstd
    Pe platformele ELF, aceste opțiuni controlează modul în care sunt comprimate secțiunile de depanare DWARF folosind «zlib».

    --compress-debug-sections=none doesn't compress DWARF debug sections. --compress-debug-sections=zlib-gnu compresses DWARF debug sections and renames them to begin with .zdebug instead of .debug. --compress-debug-sections=zlib-gabi also compresses DWARF debug sections, but rather than renaming them it sets the SHF_COMPRESSED flag in the sections' headers.

    Opțiunea --compress-debug-sections=zlib este un alias pentru --compress-debug-sections=zlib-gabi.

    --compress-debug-sections=zstd comprimă secțiunile de depanare DWARF folosind «zstd».

    Note that this option overrides any compression in input debug sections, so if a binary is linked with --compress-debug-sections=none for example, then any compressed debug sections in input files will be uncompressed before they are copied into the output binary.

    The default compression behaviour varies depending upon the target involved and the configure options used to build the toolchain. The default can be determined by examining the output from the linker's --help option.

--reduce-memory-overheads
    This option reduces memory requirements at ld runtime, at the expense of linking speed. This was introduced to select the old O(n^2) algorithm for link map file generation, rather than the new O(n) algorithm which uses about 40% more memory for symbol storage.

    Another effect of the switch is to set the default hash table size to 1021, which again saves memory at the cost of lengthening the linker's run time. This is not done however if the --hash-size switch has been used.

    Opțiunea --reduce-memory-overheads poate fi utilizată și pentru a activa alte compromisuri în versiunile viitoare ale editorului de legături.

--max-cache-size=dimensiunea
    ld normally caches the relocation information and symbol tables of input files in memory with the unlimited size. This option sets the maximum cache size to size. Note - if the --no-keep-memory command line option has been used then the linker acts as if the maximum cache size has been set to 0 - ie nothing is retained.

--build-id
--build-id=stil
    Request the creation of a ".note.gnu.build-id" ELF note section or a ".buildid" COFF section. The contents of the note are unique bits identifying this linked file. style can be "uuid" to use 128 random bits; "sha1" to use a 160-bit SHA1 hash, "md5" to use a 128-bit MD5 hash, or "xx" to use a 128-bit XXHASH on the normative parts of the output contents; or "0xhexstring" to use a chosen bit string specified as an even number of hexadecimal digits ("-" and ":" characters between digit pairs are ignored). If style is omitted, "sha1" is used.

    The "md5", "sha1", and "xx" styles produces an identifier that is always the same in an identical output file, but are almost certainly unique among all nonidentical output files. It is not intended to be compared as a checksum for the file's contents. A linked file may be changed later by other tools, but the build ID bit string identifying the original linked file does not change.

    Pasarea "none" pentru stil dezactivează valoarea din orice opțiuni "--build-id" anterioare din linia de comandă.

--package-metadata=JSON
    Request the creation of a ".note.package" ELF note section. The contents of the note are in JSON format, as per the package metadata specification. For more information see: https://systemd.io/ELF_PACKAGE_METADATA/ The JSON argument support percent-encoding and following %[string] (where string refers to the name in HTML's Named Character References) encoding: %[comma] for ,, %[lbrace] for {, %[quot] for ", %[rbrace] for }, and %[space] for space character. If the JSON argument is missing/empty then this will disable the creation of the metadata note, if one had been enabled by an earlier occurrence of the --package-metadata option. If the linker has been built with libjansson, then the JSON string will be validated.

The i386 PE linker supports the -shared option, which causes the output to be a dynamically linked library (DLL) instead of a normal executable. You should name the output "*.dll" when you use this option. In addition, the linker fully supports the standard "*.def" files, which may be specified on the linker command line like an object file (in fact, it should precede archives it exports symbols from, to ensure that they get linked in, just like a normal object file).

În plus față de opțiunile comune tuturor obiectivelor, editorul de legături i386 PE acceptă opțiuni de linie de comandă suplimentare care sunt specifice obiectivului i386 PE. Opțiunile care iau valori pot fi separate de valorile lor printr-un spațiu sau un semn egal.

--add-stdcall-alias
    Dacă este specificată, simbolurile cu sufixul stdcall (@nn) vor fi exportate atât în forma inițială, cât și fără acest sufix. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--base-file fișier
    Utilizează filșier ca nume al fișierului în care se salvează adresele de bază ale tuturor realocărilor necesare pentru generarea DLL-urilor cu dlltool. [Aceasta este o opțiune specifică pentru PE i386]

--dll
    Creează o DLL în locul unui executabil obișnuit. De asemenea, puteți utiliza -shared sau specifica o „BIBLIOTECĂ” într-un fișier „.def” dat. [Această opțiune este specifică portului i386 PE vizat de editorul de legături]

--enable-long-section-names
--disable-long-section-names
    The PE variants of the COFF object format add an extension that permits the use of section names longer than eight characters, the normal limit for COFF. By default, these names are only allowed in object files, as fully-linked executable images do not carry the COFF string table required to support the longer names. As a GNU extension, it is possible to allow their use in executable images as well, or to (probably pointlessly!) disallow it in object files, by using these two options. Executable images generated with these long section names are slightly non-standard, carrying as they do a string table, and may generate confusing output when examined with non-GNU PE-aware tools, such as file viewers and dumpers. However, GDB relies on the use of PE long section names to find Dwarf-2 debug information sections in an executable image at runtime, and so if neither option is specified on the command-line, ld will enable long section names, overriding the default and technically correct behaviour, when it finds the presence of debug information while linking an executable image and not stripping symbols. [This option is valid for all PE targeted ports of the linker]

--enable-stdcall-fixup
--disable-stdcall-fixup
    If the link finds a symbol that it cannot resolve, it will attempt to do "fuzzy linking" by looking for another defined symbol that differs only in the format of the symbol name (cdecl vs stdcall) and will resolve that symbol by linking to the match. For example, the undefined symbol "_foo" might be linked to the function "_foo@12", or the undefined symbol "_bar@16" might be linked to the function "_bar". When the linker does this, it prints a warning, since it normally should have failed to link, but sometimes import libraries generated from third-party dlls may need this feature to be usable. If you specify --enable-stdcall-fixup, this feature is fully enabled and warnings are not printed. If you specify --disable-stdcall-fixup, this feature is disabled and such mismatches are considered to be errors. [This option is specific to the i386 PE targeted port of the linker]

--leading-underscore
--no-leading-underscore
    Pentru majoritatea țintelor, prefixul implicit al simbolului este o liniuță de subliniere și este definit în descrierea țintei. Prin această opțiune este posibil să dezactivați/activați prefixul implicit al simbolului, reprezentat de o liniuță de subliniere.

--export-all-symbols
    If given, all global symbols in the objects used to build a DLL will be exported by the DLL. Note that this is the default if there otherwise wouldn't be any exported symbols. When symbols are explicitly exported via DEF files or implicitly exported via function attributes, the default is to not export anything else unless this option is given. Note that the symbols "DllMain@12", "DllEntryPoint@0", "DllMainCRTStartup@12", and "impure_ptr" will not be automatically exported. Also, symbols imported from other DLLs will not be re-exported, nor will symbols specifying the DLL's internal layout such as those beginning with "_head_" or ending with "_iname". In addition, no symbols from "libgcc", "libstd++", "libmingw32", or "crtX.o" will be exported. Symbols whose names begin with "__rtti_" or "__builtin_" will not be exported, to help with C++ DLLs. Finally, there is an extensive list of cygwin-private symbols that are not exported (obviously, this applies on when building DLLs for cygwin targets). These cygwin-excludes are: "_cygwin_dll_entry@12", "_cygwin_crt0_common@8", "_cygwin_noncygwin_dll_entry@12", "_fmode", "_impure_ptr", "cygwin_attach_dll", "cygwin_premain0", "cygwin_premain1", "cygwin_premain2", "cygwin_premain3", and "environ". [This option is specific to the i386 PE targeted port of the linker]

--exclude-symbols simbol,simbol,...
    Specifică o listă de simboluri care nu trebuie exportate automat. Numele simbolurilor pot fi separate prin virgule sau două puncte. [Această opțiune este specifică versiunii pentru ținta i386 PE a editorului de legături]

--exclude-all-symbols
    Specifică faptul că niciun simbol nu trebuie exportat automat. [Această opțiune este specifică versiunii pentru ținta i386 PE a editorului de legături]

--file-alignment
    Specificați alinierea fișierului. Secțiunile din fișier vor începe întotdeauna la poziții din fișier care sunt multipli ai acestui număr. Valoarea implicită este 512. [Această opțiune este specifică versiunii pentru ținta i386 PE a editorului de legături]

--heap rezerva
--heap rezerva,angajată
    [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]Specifică numărul de octeți de memorie care trebuie rezervați (și, opțional, alocați definitiv) pentru a fi folosiți ca grămadă „heap” pentru acest program. Valoarea implicită este de 1 Mo rezervat și 4 Ko alocat definitiv.

--kill-at
    Dacă este specificată, sufixele stdcall (@nn) vor fi eliminate din simboluri înainte ca acestea să fie exportate. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--large-address-aware
    If given, the appropriate bit in the "Characteristics" field of the COFF header is set to indicate that this executable supports virtual addresses greater than 2 gigabytes. This should be used in conjunction with the /3GB or /USERVA=value megabytes switch in the "[operating systems]" section of the BOOT.INI. Otherwise, this bit has no effect. [This option is specific to PE targeted ports of the linker]

--disable-large-address-aware
    Reverts the effect of a previous --large-address-aware option. This is useful if --large-address-aware is always set by the compiler driver (e.g. Cygwin gcc) and the executable does not support virtual addresses greater than 2 gigabytes. [This option is specific to PE targeted ports of the linker]

--major-image-version valoare
    Stabilește numărul major al „versiunii imaginii”. Valoarea implicită este 1. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--major-os-version valoare
    Stabilește numărul major al „versiunii sistemului de operare”. Valoarea implicită este 4. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--major-subsystem-version valoare
    Stabilește numărul major al „versiunii subsistemului”. Valoarea implicită este 4. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--minor-image-version valoare
    Stabilește numărul minor al „versiunii imaginii”. Valoarea implicită este 0. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--minor-os-version valoare
    Stabilește numărul minor al „versiunii sistemului de operare”. Valoarea implicită este 0. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--minor-subsystem-version valoare
    Stabilește numărul minor al „versiunii subsistemului”. Valoarea implicită este 0. [Această opțiune este specifică versiunii editorului de legături destinat arhitecturii i386 PE]

--output-def fișier
    The linker will create the file file which will contain a DEF file corresponding to the DLL the linker is generating. This DEF file (which should be called "*.def") may be used to create an import library with "dlltool" or may be used as a reference to automatically or implicitly exported symbols. [This option is specific to the i386 PE targeted port of the linker]

--enable-auto-image-base
--enable-auto-image-base=valoare
    Alege automat baza de imagine pentru DLL-uri, opțional începând cu baza valoare, cu excepția cazului în care este specificată una folosind argumentul "--image-base". Prin utilizarea unei sume de control (hash) generată din nume-dll pentru a crea baze de imagini unice pentru fiecare DLL, sunt evitate coliziunile și realocările în memorie care pot întârzia executarea programului. [Această opțiune este specifică versiunii editorului de legături destinat pentru PE i386]

--disable-auto-image-base
    Nu generează automat o bază de imagine unică. Dacă nu există o bază de imagine specificată de utilizator („--image-base”), atunci utilizează valoarea implicită a platformei. [Această opțiune este specifică versiunii i386 PE a editorului de legături]

--dll-search-prefix șir
    When linking dynamically to a dll without an import library, search for "<string><basename>.dll" in preference to "lib<basename>.dll". This behaviour allows easy distinction between DLLs built for the various "subplatforms": native, cygwin, uwin, pw, etc. For instance, cygwin DLLs typically use "--dll-search-prefix=cyg". [This option is specific to the i386 PE targeted port of the linker]

--enable-auto-import
    Do sophisticated linking of "_symbol" to "__imp__symbol" for DATA imports from DLLs, thus making it possible to bypass the dllimport mechanism on the user side and to reference unmangled symbol names. [This option is specific to the i386 PE targeted port of the linker]

    Următoarele observații se referă la implementarea inițială a funcționalității și sunt în prezent depășite pentru țintele Cygwin și MinGW.

    Notă: Utilizarea extensiei „auto-import” va face ca secțiunea de text a fișierului imagine să devină modificabilă. Acest lucru nu respectă specificațiile formatului PE-COFF publicate de Microsoft.

    Note - use of the 'auto-import' extension will also cause read only data which would normally be placed into the .rdata section to be placed into the .data section instead. This is in order to work around a problem with consts that is described here: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

    În general, utilizarea opțiunii de „import automat”, va „funcționa” – dar uneori s-ar putea să primiți acest mesaj:

    "variabila «<var>» nu poate fi importată automat. Pentru detalii, consultați documentația referitoare la opțiunea "--enable-auto-import" a programului ld."

    This message occurs when some (sub)expression accesses an address ultimately given by the sum of two constants (Win32 import tables only allow one). Instances where this may occur include accesses to member fields of struct variables imported from a DLL, as well as using a constant index into an array variable imported from a DLL. Any multiword variable (arrays, structs, long long, etc) may trigger this error condition. However, regardless of the exact data type of the offending exported variable, ld will always detect it, issue the warning, and exit.

    Există mai multe modalități de a rezolva această problemă, indiferent de tipul de date al variabilei exportate:

    O soluție este utilizarea opțiunii „--enable-runtime-pseudo-reloc”. Aceasta lasă sarcina ajustării referințelor în codul clientului în seama mediului de execuție, astfel încât această metodă funcționează numai dacă mediul de execuție acceptă această caracteristică.

    O a doua soluție constă în a transforma una dintre „constantele” respective într-o variabilă — adică într-o valoare necunoscută și care nu poate fi optimizată în timpul compilării. În cazul matricilor, există două posibilități: a) transformarea elementului indexat (adresa matricei) într-o variabilă sau b) transformarea indexului „constant” într-o variabilă. Astfel:

            extern type extern_array[];
            extern_array[1] -->
               { volatile type *t=extern_array; t[1] }

    sau

            extern type extern_array[];
            extern_array[1] -->
               { volatile int t=1; extern_array[t] }

    Pentru structuri (și majoritatea celorlalte tipuri de date cu mai multe cuvinte), singura opțiune este de a face structura în sine variabilă (sau long long, sau ...):

            extern struct s extern_struct;
            extern_struct.field -->
               { volatile struct s *t=&extern_struct; t->field }

    sau

            extern long long extern_ll;
            extern_ll -->
              { volatile long long * local_ll=&extern_ll; *local_ll }

    A third method of dealing with this difficulty is to abandon 'auto-import' for the offending symbol and mark it with "__declspec(dllimport)". However, in practice that requires using compile-time #defines to indicate whether you are building a DLL, building client code that will link to the DLL, or merely building/linking to a static library. In making the choice between the various methods of resolving the 'direct address with constant offset' problem, you should consider typical real-world usage:

    Original:

            --foo.h
            extern int arr[];
            --foo.c
            #include "foo.h"
            void main(int argc, char **argv){
              printf("%d\n",arr[1]);
            }

    Soluția 1:

            --foo.h
            extern int arr[];
            --foo.c
            #include "foo.h"
            void main(int argc, char **argv){
              /* This workaround is for win32 and cygwin; do not "optimize" */
              volatile int *parr = arr;
              printf("%d\n",parr[1]);
            }

    Soluția 2:

            --foo.h
            /* Note: auto-export is assumed (no __declspec(dllexport)) */
            #if (defined(_WIN32) || defined(__CYGWIN__)) && \
              !(defined(FOO_BUILD_DLL) || defined(FOO_STATIC))
            #define FOO_IMPORT __declspec(dllimport)
            #else
            #define FOO_IMPORT
            #endif
            extern FOO_IMPORT int arr[];
            --foo.c
            #include "foo.h"
            void main(int argc, char **argv){
              printf("%d\n",arr[1]);
            }

    O a patra modalitate de a evita această problemă este de a vă recodifica biblioteca pentru a utiliza o interfață funcțională mai degrabă decât o interfață de date pentru variabilele în cauză (de exemplu, funcțiile de accesor set_foo() și get_foo()).

--disable-auto-import
    Nu încearcă să facă legarea sofisticată a „_symbol” la „__imp__symbol” pentru importurile de DATE din DLL-uri. [Această opțiune este specifică portului i386 PE al editorului de legături]

--enable-runtime-pseudo-reloc
    If your code contains expressions described in --enable-auto-import section, that is, DATA imports from DLL with non-zero offset, this switch will create a vector of 'runtime pseudo relocations' which can be used by runtime environment to adjust references to such data in your client code. [This option is specific to the i386 PE targeted port of the linker]

--disable-runtime-pseudo-reloc
    Nu creează pseudorealocări pentru importurile de DATE cu o poziție diferită de zero din DLL-uri. [Această opțiune este specifică versiunii editorului de legături pentru i386 PE]

--enable-extra-pe-debug
    Afișează informații suplimentare de depanare referitoare la procesul de transformare a simbolurilor în timpul importului automat. [Această opțiune este specifică versiunii editorului de legături pentru i386 PE]

--section-alignment
    Stabilește alinierea secțiunilor. Secțiunile din memorie vor începe întotdeauna la adrese care sunt un multiplu al acestui număr. Valoarea implicită este 0x1000. [Această opțiune este specifică versiunii editorului de legături pentru i386 PE]

--stack rezerva
--stack rezerva,angajată
    Specifică numărul de octeți de memorie care trebuie rezervați (și, opțional, alocați definitiv) pentru a fi folosiți ca stivă pentru acest program. Valoarea implicită este de 2 Mo rezervați și 4 Ko alocați definitiv. [Această opțiune este specifică versiunii editorului de legături pentru i386 PE]

--subsystem care
--subsystem care:major
--subsystem care:major.minor
    Specifică subsistemul în cadrul căruia se va executa programul. Valorile permise pentru care sunt "native", "windows", "console", "posix" și "xbox". Opțional, puteți defini și versiunea subsistemului. Sunt acceptate, de asemenea, valori numerice pentru care. [Această opțiune este specifică versiunii editorului de legături pentru i386 PE]

    Următoarele opțiuni activează fanioanele din câmpul "DllCharacteristics" al antetului fișierului PE: [Aceste opțiuni sunt specifice versiunii editorului de legături pentru PE]

--high-entropy-va
--disable-high-entropy-va
    Imaginea este compatibilă cu randomizarea aspectului spațiului de adrese („address space layout randomization”: ASLR) pe 64 de biți. Această opțiune este activată în mod implicit pentru imaginile PE pe 64 de biți din țintele MinGW.

    Această opțiune implică, de asemenea, --dynamicbase și --enable-reloc-section.

--dynamicbase
--disable-dynamicbase
    The image base address may be relocated using address space layout randomization (ASLR). This feature was introduced with MS Windows Vista for i386 PE targets. This option is enabled by default for MinGW targets but can be disabled via the --disable-dynamicbase option. This option also implies --enable-reloc-section.

--forceinteg
--disable-forceinteg
    Verificările de integritate a codului sunt puse în aplicare. Această opțiune este dezactivată în mod implicit.

--nxcompat
--disable-nxcompat
    Imaginea este compatibilă cu funcția Data Execution Prevention. Această funcție a fost introdusă odată cu MS Windows XP SP2 pentru țintele i386 PE. Opțiunea este activată în mod implicit pentru țintele MinGW.

--no-isolation
--disable-no-isolation
    Deși imaginea înțelege izolarea, nu izolează imaginea. Această opțiune este dezactivată în mod implicit.

--no-seh
--disable-no-seh
    Imaginea nu utilizează SEH. Nici un gestionar SE nu poate fi apelat din această imagine. Această opțiune este dezactivată în mod implicit.

--no-bind
--disable-no-bind
    Nu asociază această imagine. Această opțiune este dezactivată în mod implicit.

--wdmdriver
--disable-wdmdriver
    Controlorul folosește modelul de controlor MS Windows. Această opțiune este dezactivată în mod implicit.

--tsaware
--disable-tsaware
    Imaginea este compatibilă cu Terminal Server. Această opțiune este dezactivată în mod implicit.

--insert-timestamp
--no-insert-timestamp
    Insert a real timestamp into the image. This is the default behaviour as it matches legacy code and it means that the image will work with other, proprietary tools. The problem with this default is that it will result in slightly different images being produced each time the same sources are linked. The option --no-insert-timestamp can be used to insert a zero value for the timestamp, this ensuring that binaries produced from identical sources will compare identically.

    If --insert-timestamp is active then the time inserted is either the time that the linking takes place or, if the "SOURCE_DATE_EPOCH" environment variable is defined, the number of seconds since Unix epoch as specified by that variable.

--enable-reloc-section
--disable-reloc-section
    Creează tabelul de realocare a bazei, care este necesar în cazul în care imaginea este încărcată la o bază de imagine diferită de cea specificată în antetul PE. Această opțiune este activată în mod implicit.

Platforma C6X uClinux utilizează un format binar numit DSBT pentru a gestiona bibliotecile partajate. Fiecare bibliotecă partajată din sistem trebuie să aibă un index unic; toate fișierele executabile utilizează indexul 0.

--dsbt-size dimensiunea
    Această opțiune definește numărul de intrări din tabelul DSBT al executabilului sau al bibliotecii partajate curente la size. Implicit, se creează un tabel cu 64 de intrări.

--dsbt-index index
    This option sets the DSBT index of the current executable or shared library to index. The default is 0, which is appropriate for generating executables. If a shared library is generated with a DSBT index of 0, the "R_C6000_DSBT_INDEX" relocs are copied into the output file.

    Opțiunea --no-merge-exidx-entries dezactivează combinarea intrărilor exidx adiacente în informațiile de desfășurare a cadrelor.

--branch-stub
    This option enables linker branch relaxation by inserting branch stub sections when needed to extend the range of branches. This option is usually not required since C-SKY supports branch and call instructions that can access the full memory range and branch relaxation is normally handled by the compiler or assembler.

--stub-group-size=N
    This option allows finer control of linker branch stub creation. It sets the maximum size of a group of input sections that can be handled by one stub section. A negative value of N locates stub sections after their branches, while a positive value allows stub sections to appear either before or after the branches. Values of 1 or -1 indicate that the linker should choose suitable defaults.

Editorii de legături 68HC11 și 68HC12 acceptă opțiuni specifice pentru controlul cartografierii comutării băncilor de memorie și generarea de cod trambulină.

--no-trampoline
    Această opțiune dezactivează generarea de trambuline. În mod implicit, se generează o trambulină pentru fiecare funcție îndepărtată care este apelată folosind o instrucțiune "jsr" (acest lucru se întâmplă atunci când se accesează un indicator către o funcție îndepărtată).

--bank-window nume
    Această opțiune indică editorului de legături numele regiunii de memorie din specificația MEMORY care descrie fereastra băncii de memorie. Definiția acestei regiuni este apoi utilizată de editorul de legături pentru a calcula paginarea și adresele din cadrul ferestrei de memorie.

Sunt acceptate următoarele opțiuni pentru a controla modul de generare a GOT la legarea pentru ținte 68K.

--got=tip
    Această opțiune indică editorului de legături ce schemă de generare GOT să utilizeze. tip trebuie să fie una dintre următoarele: single, negative, multigot sau target. Pentru mai multe informații, consultați intrarea Info pentru ld.

Următoarele opțiuni sunt acceptate pentru a controla generarea instrucțiunilor microMIPS și verificările de realocare de ramuri în cazul tranzițiilor între modurile ISA la legarea pentru țintele MIPS.

--insn32
--no-insn32
    These options control the choice of microMIPS instructions used in code generated by the linker, such as that in the PLT or lazy binding stubs, or in relaxation. If --insn32 is used, then the linker only uses 32-bit instruction encodings. By default or if --no-insn32 is used, all instruction encodings are used, including 16-bit ones where possible.

--ignore-branch-isa
--no-ignore-branch-isa
    These options control branch relocation checks for invalid ISA mode transitions. If --ignore-branch-isa is used, then the linker accepts any branch relocations and any ISA mode transition required is lost in relocation calculation, except for some cases of "BAL" instructions which meet relaxation conditions and are converted to equivalent "JALX" instructions as the associated relocation is calculated. By default or if --no-ignore-branch-isa is used a check is made causing the loss of an ISA mode transition to produce an error.

--compact-branches
--no-compact-branches
    Aceste opțiuni controlează generarea de instrucțiuni compacte de către editorul de legături în intrările PLT pentru MIPS R6.

For the pdp11-aout target, three variants of the output format can be produced as selected by the following options. The default variant for pdp11-aout is the --omagic option, whereas for other targets --nmagic is the default. The --imagic option is defined only for the pdp11-aout target, while the others are described here as they apply to the pdp11-aout target.

-N
--omagic
    Mark the output as "OMAGIC" (0407) in the a.out header to indicate that the text segment is not to be write-protected and shared. Since the text and data sections are both readable and writable, the data section is allocated immediately contiguous after the text segment. This is the oldest format for PDP11 executable programs and is the default for ld on PDP11 Unix systems from the beginning through 2.11BSD.

-n
--nmagic
    Mark the output as "NMAGIC" (0410) in the a.out header to indicate that when the output file is executed, the text portion will be read-only and shareable among all processes executing the same file. This involves moving the data areas up to the first possible 8K byte page boundary following the end of the text. This option creates a pure executable format.

-z
--imagic
    Mark the output as "IMAGIC" (0411) in the a.out header to indicate that when the output file is executed, the program text and data areas will be loaded into separate address spaces using the split instruction and data space feature of the memory management unit in larger models of the PDP11. This doubles the address space available to the program. The text segment is again pure, write-protected, and shareable. The only difference in the output format between this option and the others, besides the magic number, is that both the text and data sections start at location 0. The -z option selected this format in 2.11BSD. This option creates a separate executable format.

--no-omagic
    Echivalent cu --nmagic pentru pdp11-aout.

MEDIU
Puteți modifica comportamentul ld folosind variabilele de mediu "GNUTARGET", "LDEMULATION" și "COLLECT_NO_DEMANGLE".

"GNUTARGET" determines the input-file object format if you don't use -b (or its synonym --format). Its value should be one of the BFD names for an input format. If there is no "GNUTARGET" in the environment, ld uses the natural format of the target. If "GNUTARGET" is set to "default" then BFD attempts to discover the input format by examining binary input files; this method often succeeds, but there are potential ambiguities, since there is no method of ensuring that the magic number used to specify object-file formats is unique. However, the configuration procedure for BFD on each system places the conventional format for that system first in the search-list, so ambiguities are resolved in favor of convention.

"LDEMULATION" determines the default emulation if you don't use the -m option. The emulation can affect various aspects of linker behaviour, particularly the default linker script. You can list the available emulations with the --verbose or -V options. If the -m option is not used, and the "LDEMULATION" environment variable is not defined, the default emulation depends upon how the linker was configured.

În mod normal, editorul de legături va proceda în mod implicit la decodificarea simbolurilor. Cu toate acestea, dacă "COLLECT_NO_DEMANGLE" este definită în mediu, atunci se va renunța implicit la decodificarea simbolurilor. Această variabilă de mediu este utilizată într-o manieră similară de către programul "gcc" de învăluire a editorului de legături. Valoarea implicită poate fi anulată de opțiunile --demangle și --no-demangle.

If the PE/COFF specific --insert-timestamp is active and the SOURCE_DATE_EPOCH environment variable is defined, then the timestamp value in this variable will be inserted into the COFF header instead of the current time.

If the "LD_STATS" environment variable is defined then linker resource use information will be recorded, just as if the --stats option had been used. If the "LD_STATS" variable has a string value then this will used as the name of a file into which the information should be stored. Otherwise the information will be sent to the standard output stream.

CONSULTAȚI ȘI
ar(1), nm(1), objcopy(1), objdump(1), readelf(1) și intrările Info pentru binutils și ld.

DREPTURI DE AUTOR
Drepturi de autor © 1991-2026 Free Software Foundation, Inc.

Se acordă permisiunea de a copia, distribui și/sau modifica acest document în conformitate cu termenii Licenței GNU Free Documentation, versiunea 1.3 sau orice versiune ulterioară publicată de Free Software Foundation; fără secțiuni invariante, fără texte de copertă și fără texte de contra copertă. O copie a licenței este inclusă în secțiunea intitulată „GNU Free Documentation License”.

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.