AnglaisFrançaisAllemandItalienPortugaisRusseEspagnol

Icône de favori OnWorks

mips64-linux-gnuabi64-ld.bfd - En ligne dans le Cloud

Exécutez mips64-linux-gnuabi64-ld.bfd dans le fournisseur d'hébergement gratuit OnWorks sur Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

Il s'agit de la commande mips64-linux-gnuabi64-ld.bfd qui peut être exécutée dans le fournisseur d'hébergement gratuit OnWorks en utilisant l'un de nos multiples postes de travail en ligne gratuits tels que Ubuntu Online, Fedora Online, l'émulateur en ligne Windows ou l'émulateur en ligne MAC OS

PROGRAMME:

PRÉNOM


ld - L'éditeur de liens GNU

SYNOPSIS


ld [Options] fichier obj ...

DESCRIPTION


ld combine un certain nombre de fichiers d'objets et d'archives, déplace leurs données et associe le symbole
les références. Habituellement, la dernière étape de la compilation d'un programme consiste à exécuter ld.

ld accepte les fichiers Linker Command Language écrits dans un sur-ensemble de Link Editor d'AT&T
Syntaxe du langage de commande, pour fournir un contrôle explicite et total sur le processus de liaison.

Cette page de manuel ne décrit pas le langage de commande ; voir le ld entrée dans "info" pour l'intégralité
des détails sur le langage de commande et sur d'autres aspects de l'éditeur de liens GNU.

Cette version de ld utilise les bibliothèques BFD à usage général pour opérer sur des fichiers objets. Cette
permet ld pour lire, combiner et écrire des fichiers objets dans de nombreux formats différents --- pour
exemple, COFF ou "a.out". Différents formats peuvent être liés entre eux pour produire n'importe quel
type de fichier objet disponible.

Mis à part sa flexibilité, l'éditeur de liens GNU est plus utile que d'autres éditeurs de liens pour fournir
informations diagnostiques. De nombreux linkers abandonnent l'exécution immédiatement après avoir rencontré un
Erreur; dès que possible, ld continue de s'exécuter, vous permettant d'identifier d'autres erreurs
(ou, dans certains cas, pour obtenir un fichier de sortie malgré l'erreur).

L'éditeur de liens GNU ld vise à couvrir un large éventail de situations et à être aussi compatible
que possible avec d'autres linkers. En conséquence, vous avez de nombreux choix pour contrôler son
comportement.

OPTIONS


L'éditeur de liens prend en charge une pléthore d'options de ligne de commande, mais dans la pratique, peu d'entre elles
sont utilisés dans un contexte particulier. Par exemple, une utilisation fréquente de ld est de lier
fichiers objet Unix standard sur un système Unix standard pris en charge. Sur un tel système, pour
lier un fichier "hello.o":

Oui /lib/crt0.o bonjour.o -lc

Cela raconte ld pour produire un fichier appelé sortie à la suite de la liaison du fichier
"/lib/crt0.o" avec "hello.o" et la librairie "libc.a", qui viendra du standard
rechercher des répertoires. (Voir la discussion sur le -l option ci-dessous.)

Certaines des options de ligne de commande pour ld peut être spécifié à n'importe quel point de la ligne de commande.
Cependant, les options qui font référence à des fichiers, telles que -l or -T, provoque la lecture du fichier au
point d'apparition de l'option dans la ligne de commande, par rapport aux fichiers objets et
d'autres options de fichier. La répétition d'options non-fichier avec un argument différent aura soit
aucun autre effet, ou remplacer les occurrences précédentes (celles plus à gauche sur la commande
ligne) de cette option. Les options qui peuvent être spécifiées de manière significative plus d'une fois sont
indiqué dans les descriptions ci-dessous.

Les arguments non optionnels sont des fichiers objets ou des archives qui doivent être liés ensemble. Ils
peut suivre, précéder ou être mélangé avec des options de ligne de commande, sauf qu'un fichier objet
L'argument ne peut pas être placé entre une option et son argument.

Généralement, l'éditeur de liens est invoqué avec au moins un fichier objet, mais vous pouvez spécifier d'autres
formes de fichiers d'entrée binaires utilisant -l, -R, et le langage de commande de script. Si aucune binaire
les fichiers d'entrée sont spécifiés, l'éditeur de liens ne produit aucune sortie et émet le
message Non contribution fichiers.

Si l'éditeur de liens ne peut pas reconnaître le format d'un fichier objet, il supposera qu'il s'agit d'un
script de l'éditeur de liens. Un script spécifié de cette manière augmente le script de l'éditeur de liens principal utilisé pour
le lien (soit le script de l'éditeur de liens par défaut, soit celui spécifié en utilisant -T). Ce
La fonction permet à l'éditeur de liens d'établir un lien avec un fichier qui semble être un objet ou un
archive, mais définit simplement certaines valeurs de symboles, ou utilise "INPUT" ou "GROUP" pour
charger d'autres objets. Spécifier un script de cette manière augmente simplement l'éditeur de liens principal
script, avec les commandes supplémentaires placées après le script principal ; Utilisez le -T possibilité de remplacer
entièrement le script de l'éditeur de liens par défaut, mais notez l'effet de la commande "INSERT".

Pour les options dont le nom est composé d'une seule lettre, les arguments d'option doivent soit suivre le
lettre d'option sans espace, ou être donnée comme arguments séparés
immédiatement après l'option qui les requiert.

Pour les options dont le nom est composé de plusieurs lettres, un tiret ou deux peuvent précéder le
nom de l'option ; par exemple, -trace-symbole et --trace-symbole sont équivalents. Remarque --- là
est une exception à cette règle. Plusieurs options de lettres commençant par un « o » minuscule
ne peut être précédé que de deux tirets. Ceci afin de réduire la confusion avec le -o option. Donc
par exemple -magique définit le nom du fichier de sortie sur la magie alors que --magique définit le NMAGIC
drapeau sur la sortie.

Les arguments des options à plusieurs lettres doivent être séparés du nom de l'option par un
signe égal, ou être donné en tant qu'arguments séparés immédiatement après l'option qui
les exige. Par exemple, --trace-symbole foo et --trace-symbol=foo sont équivalents.
Les abréviations uniques des noms des options à plusieurs lettres sont acceptées.

Remarque --- si l'éditeur de liens est invoqué indirectement, via un pilote de compilateur (par exemple gcc) puis
toutes les options de ligne de commande de l'éditeur de liens doivent être préfixées par -Wl, (ou tout ce qui convient
pour le pilote de compilateur particulier) comme ceci :

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

Ceci est important, car sinon le programme du pilote du compilateur peut supprimer silencieusement le
options de l'éditeur de liens, ce qui entraîne un mauvais lien. La confusion peut également survenir lors du passage des options
qui nécessitent des valeurs via un pilote, comme l'utilisation d'un espace entre l'option et l'argument
agit comme un séparateur et oblige le pilote à transmettre uniquement l'option à l'éditeur de liens et au
argument au compilateur. Dans ce cas, il est plus simple d'utiliser les formes jointes des deux
options à une ou plusieurs lettres, telles que :

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

Voici un tableau des commutateurs de ligne de commande génériques acceptés par l'éditeur de liens GNU :

@filet
Lire les options de ligne de commande à partir de filet. Les options lues sont insérées à la place des
original @filet option. Si filet n'existe pas ou ne peut pas être lu, l'option
seront traités littéralement et non supprimés.

options dans filet sont séparés par des espaces. Un caractère d'espacement peut être inclus
dans une option en entourant l'option entière de guillemets simples ou doubles. Tout
caractère (y compris une barre oblique inverse) peut être inclus en préfixant le caractère à être
inclus avec une barre oblique inverse. Les filet peut lui-même contenir des @ supplémentairesfilet options; tout
ces options seront traitées de manière récursive.

-a mot-clé
Cette option est prise en charge pour la compatibilité HP/UX. Les mot-clé l'argument doit être l'un des
Les cordes archives, communou défaut. -unearchive est fonctionnellement équivalent à
-Bstatique, et les deux autres mots-clés sont fonctionnellement équivalents à -Bdynamique. Ce
L'option peut être utilisée autant de fois que vous le souhaitez.

--Audit AUDITLIB
Ajoute AUDITLIB à l'entrée "DT_AUDIT" de la section dynamique. AUDITLIB n'est pas vérifié
pour l'existence, il n'utilisera pas non plus le DT_SONAME spécifié dans la bibliothèque. Si spécifié
plusieurs fois "DT_AUDIT" contiendra une liste d'interfaces d'audit séparées par deux points à
utilisation. Si l'éditeur de liens trouve un objet avec une entrée d'audit lors de la recherche de
bibliothèques, il ajoutera une entrée "DT_DEPAUDIT" correspondante dans le fichier de sortie. Cette
L'option n'a de sens que sur les plates-formes ELF prenant en charge l'interface rtld-audit.

-A architecture
--architecture=architecture
Dans la version actuelle de ld, cette option n'est utile que pour la famille Intel 960 de
architecturales. Dans ce ld configuration, le architecture l'argument identifie le
architecture particulière à la famille 960, permettant certaines sauvegardes et modifiant la
chemin de recherche de la bibliothèque d'archives.

Les prochaines versions de ld peut prendre en charge des fonctionnalités similaires pour d'autres architectures
familles.

-b format d'entrée
--format=format d'entrée
ld peut être configuré pour prendre en charge plus d'un type de fichier objet. Si votre ld is
configuré de cette façon, vous pouvez utiliser le -b option pour spécifier le format binaire pour l'entrée
fichiers objet qui suivent cette option sur la ligne de commande. Même quand ld est configuré
pour prendre en charge d'autres formats d'objet, vous n'avez généralement pas besoin de le spécifier, car ld
doit être configuré pour attendre comme format d'entrée par défaut le format le plus courant sur chaque
machine. format d'entrée est une chaîne de texte, le nom d'un format particulier pris en charge par
les bibliothèques BFD. (Vous pouvez lister les formats binaires disponibles avec objdump -i.)

Vous pouvez utiliser cette option si vous liez des fichiers avec un binaire inhabituel
format. Vous pouvez aussi utiliser -b pour changer de format explicitement (lors de la liaison de fichiers objets
de formats différents), en incluant -b format d'entrée avant chaque groupe de fichiers objets
dans un format particulier.

Le format par défaut est tiré de la variable d'environnement "GNUTARGET".

Vous pouvez également définir le format d'entrée à partir d'un script, à l'aide de la commande « TARGET » ;

-c Fichier de commandes IRM
--mri-script=Fichier de commandes IRM
Pour la compatibilité avec les linkers produits par IRM, ld accepte les fichiers de script écrits dans un
langage de commande alternatif et restreint, décrit dans les fichiers de script compatibles IRM
section de la documentation GNU ld. Introduire les fichiers de script IRM avec l'option -c; utilisation
le -T option pour exécuter des scripts d'éditeur de liens écrits dans l'usage général ld script
Langue. Si IRM-cmdfile n'existe pas, ld le recherche dans les répertoires spécifiés
par n'importe quel -L options.

-d
-cc
-dp Ces trois options sont équivalentes ; plusieurs formulaires sont pris en charge pour la compatibilité
avec d'autres linkers. Ils attribuent un espace aux symboles communs même si une sortie déplaçable
fichier est spécifié (avec -r). La commande de script "FORCE_COMMON_ALLOCATION" a le
même effet.

--depaudit AUDITLIB
-P AUDITLIB
Ajoute AUDITLIB à l'entrée "DT_DEPAUDIT" de la section dynamique. AUDITLIB n'est pas
vérifié pour l'existence, il n'utilisera pas non plus le DT_SONAME spécifié dans la bibliothèque. Si
spécifié plusieurs fois "DT_DEPAUDIT" contiendra une liste d'audits séparés par deux points
interfaces à utiliser. Cette option n'a de sens que sur les plates-formes ELF prenant en charge le
interface rtld-audit. L'option -P est fournie pour la compatibilité Solaris.

-e entrée
--entrée=entrée
Utiliser entrée comme symbole explicite pour commencer l'exécution de votre programme, plutôt que
le point d'entrée par défaut. S'il n'y a pas de symbole nommé entrée, l'éditeur de liens essaiera de
analyser entrée comme numéro, et utilisez-le comme adresse d'entrée (le numéro sera
interprété en base 10 ; vous pouvez utiliser un leader 0x pour la base 16, ou un leader 0 pour socle
8).

--exclude-libs lib,lib...
Spécifie une liste de bibliothèques d'archives à partir desquelles les symboles ne doivent pas être automatiquement
exporté. Les noms de bibliothèque peuvent être délimités par des virgules ou des deux-points. En précisant
"--exclude-libs ALL" exclut les symboles de toutes les bibliothèques d'archives de l'exportation automatique.
Cette option n'est disponible que pour le port ciblé i386 PE de l'éditeur de liens et pour ELF
ports ciblés. Pour i386 PE, les symboles explicitement répertoriés dans un fichier .def sont toujours
exporté, quelle que soit cette option. Pour les ports ciblés ELF, les symboles affectés par ce
L'option sera traitée comme masquée.

--exclude-modules-for-implib E/S, contrôle PID ou de communication,E/S, contrôle PID ou de communication...
Spécifie une liste de fichiers objets ou de membres d'archive, à partir desquels les symboles ne doivent pas être
automatiquement exporté, mais qui doit être copié en gros dans la bibliothèque d'import
générés pendant le lien. Les noms de modules peuvent être délimités par des virgules ou
deux-points, et doit correspondre exactement aux noms de fichiers utilisés par ld ouvrir les fichiers ; pour les archives
membres, il s'agit simplement du nom du membre, mais pour les fichiers objets, le nom indiqué doit
inclure et faire correspondre précisément n'importe quel chemin utilisé pour spécifier le fichier d'entrée sur l'éditeur de liens
ligne de commande. Cette option est disponible uniquement pour le port ciblé i386 PE du
éditeur de liens. Les symboles explicitement répertoriés dans un fichier .def sont toujours exportés, indépendamment de
cette option.

-E
--export-dynamique
--no-export-dynamique
Lors de la création d'un exécutable lié dynamiquement, à l'aide de la -E option ou le
--export-dynamique L'option oblige l'éditeur de liens à ajouter tous les symboles au symbole dynamique
table. La table des symboles dynamiques est l'ensemble des symboles visibles depuis
objets au moment de l'exécution.

Si vous n'utilisez aucune de ces options (ou utilisez le --no-export-dynamique Option de
restaurer le comportement par défaut), la table des symboles dynamiques ne contiendra normalement que
ces symboles qui sont référencés par un objet dynamique mentionné dans le lien.

Si vous utilisez "dlopen" pour charger un objet dynamique qui doit se référer aux symboles
défini par le programme, plutôt qu'un autre objet dynamique, alors vous aurez probablement
besoin d'utiliser cette option lors de la liaison du programme lui-même.

Vous pouvez également utiliser la liste dynamique pour contrôler quels symboles doivent être ajoutés au
table de symboles dynamique si le format de sortie le prend en charge. Voir la description de
--liste-dynamique.

Notez que cette option est spécifique aux ports ciblés ELF. Les cibles d'EP soutiennent un
fonction pour exporter tous les symboles d'une DLL ou d'un EXE ; voir la description de
--export-all-symbols ci-dessous.

-EB Liez des objets big-endian. Cela affecte le format de sortie par défaut.

-EL Liez des objets little-endian. Cela affecte le format de sortie par défaut.

-f prénom
--auxiliaire=prénom
Lors de la création d'un objet partagé ELF, définissez le champ interne DT_AUXILIARY sur le
nom spécifié. Cela indique à l'éditeur de liens dynamique que la table des symboles du partage
l'objet doit être utilisé comme filtre auxiliaire sur la table des symboles de l'objet partagé
prénom.

Si vous associez ultérieurement un programme à cet objet filtre, alors, lorsque vous exécutez le
programme, l'éditeur de liens dynamique verra le champ DT_AUXILIAIRE. Si l'éditeur de liens dynamique
résout tous les symboles de l'objet filtre, il vérifiera d'abord s'il existe un
définition dans l'objet partagé prénom. S'il y en a un, il sera utilisé à la place du
définition dans l'objet filtre. L'objet partagé prénom n'a pas besoin d'exister. Ainsi, le
objet partagé prénom peut être utilisé pour fournir une mise en œuvre alternative de certains
fonctions, peut-être pour le débogage ou pour des performances spécifiques à la machine.

Cette option peut être spécifiée plusieurs fois. Les entrées DT_AUXILIARY seront créées
dans l'ordre dans lequel ils apparaissent sur la ligne de commande.

-F prénom
--filtre=prénom
Lors de la création d'un objet partagé ELF, définissez le champ interne DT_FILTER sur le
Nom. Cela indique à l'éditeur de liens dynamique que la table des symboles de l'objet partagé qui
est en cours de création doit être utilisé comme filtre sur la table des symboles de l'objet partagé
prénom.

Si vous associez ultérieurement un programme à cet objet filtre, alors, lorsque vous exécutez le
programme, l'éditeur de liens dynamique verra le champ DT_FILTER. L'éditeur de liens dynamique
résoudre les symboles selon la table des symboles de l'objet filtre comme d'habitude, mais il
sera en fait lié aux définitions trouvées dans l'objet partagé prénom. Ainsi, le
l'objet filtre peut être utilisé pour sélectionner un sous-ensemble des symboles fournis par l'objet
prénom.

Certains linkers plus anciens utilisaient le -F option tout au long d'une chaîne d'outils de compilation pour
spécifiant le format de fichier objet pour les fichiers objet d'entrée et de sortie. L'éditeur de liens GNU
utilise d'autres mécanismes à cette fin : le -b, --format, --oformat options, le
la commande "TARGET" dans les scripts de l'éditeur de liens et la variable d'environnement "GNUTARGET". Le GNU
l'éditeur de liens ignorera le -F option lorsque vous ne créez pas d'objet partagé ELF.

-fini=prénom
Lors de la création d'un exécutable ELF ou d'un objet partagé, appelez NAME lorsque l'exécutable ou
l'objet partagé est déchargé, en mettant DT_FINI à l'adresse de la fonction. Par
par défaut, l'éditeur de liens utilise "_fini" comme fonction à appeler.

-g Ignoré. Prévu pour la compatibilité avec d'autres outils.

-G VALORISONS
--gpsize=VALORISONS
Définissez la taille maximale des objets à optimiser à l'aide du registre GP pour taille. Ce
n'a de sens que pour les formats de fichier objet tels que MIPS ELF qui prennent en charge
et de petits objets en différentes sections. Ceci est ignoré pour les autres fichiers objets
formats.

-h prénom
-sonnom=prénom
Lors de la création d'un objet partagé ELF, définissez le champ interne DT_SONAME sur le
Nom. Lorsqu'un exécutable est lié à un objet partagé qui possède un champ DT_SONAME,
puis lorsque l'exécutable est exécuté, l'éditeur de liens dynamique tentera de charger le fichier partagé
objet spécifié par le champ DT_SONAME plutôt que d'utiliser le nom de fichier donné à
l'éditeur de liens.

-i Effectuer un lien incrémentiel (identique à l'option -r).

-init=prénom
Lors de la création d'un exécutable ELF ou d'un objet partagé, appelez NAME lorsque l'exécutable ou
l'objet partagé est chargé, en définissant DT_INIT sur l'adresse de la fonction. Par
par défaut, l'éditeur de liens utilise "_init" comme fonction à appeler.

-l spéc.nom
--bibliothèque=spéc.nom
Ajouter l'archive ou le fichier objet spécifié par spéc.nom à la liste des fichiers à lier.
Cette option peut être utilisée un nombre illimité de fois. Si spéc.nom est de la forme :nom de fichier, ld
recherchera dans le chemin de la bibliothèque un fichier appelé nom de fichier, sinon il recherchera le
chemin de la bibliothèque pour un fichier appelé libnamespec.a.

Sur les systèmes qui prennent en charge les bibliothèques partagées, ld peut également rechercher des fichiers autres que
libnamespec.a. Plus précisément, sur les systèmes ELF et SunOS, ld recherchera dans un répertoire
une bibliothèque appelée libnamespec.so avant de chercher un appelé libnamespec.a. (Par
convention, une extension ".so" indique une bibliothèque partagée.) Notez que ce comportement
ne s'applique pas à :nom de fichier, qui spécifie toujours un fichier appelé nom de fichier.

L'éditeur de liens ne recherchera une archive qu'une seule fois, à l'emplacement où il est spécifié sur
la ligne de commande. Si l'archive définit un symbole qui n'était pas défini dans un objet
qui est apparu avant l'archive sur la ligne de commande, l'éditeur de liens inclura le
fichier(s) approprié(s) de l'archive. Cependant, un symbole non défini dans un objet
apparaissant plus tard sur la ligne de commande n'incitera pas l'éditeur de liens à rechercher l'archive
nouveau.

Voir le -( option pour forcer l'éditeur de liens à rechercher plusieurs fois les archives.

Vous pouvez lister la même archive plusieurs fois sur la ligne de commande.

Ce type de recherche d'archives est standard pour les éditeurs de liens Unix. Cependant, si vous êtes
en utilisant ld sur AIX, notez qu'il est différent du comportement de l'éditeur de liens AIX.

-L répertoire de recherche
--library-path=répertoire de recherche
Ajouter un chemin répertoire de recherche à la liste des chemins qui ld recherchera les bibliothèques d'archives et
ld scripts de contrôle. Vous pouvez utiliser cette option autant de fois que vous le souhaitez. Les répertoires sont
recherchés dans l'ordre dans lequel ils sont spécifiés sur la ligne de commande. Annuaires
spécifiés sur la ligne de commande sont recherchés avant les répertoires par défaut. Tous -L
les options s'appliquent à tous -l options, quel que soit l'ordre dans lequel les options apparaissent.
-L les options n'affectent pas la façon dont ld recherche un script d'éditeur de liens à moins que -T option est
spécifié.

If répertoire de recherche commence par "=", alors le "=" sera remplacé par le racine système préfixe,
contrôlé par le --sysroot option, ou spécifié lorsque l'éditeur de liens est configuré.

L'ensemble par défaut des chemins recherchés (sans être spécifié avec -L) dépend de quel
mode d'émulation ld utilise, et dans certains cas également sur la façon dont il a été configuré.

Les chemins peuvent également être spécifiés dans un script de lien avec la commande "SEARCH_DIR".
Les répertoires spécifiés de cette manière sont recherchés au point où le script de l'éditeur de liens
apparaît dans la ligne de commande.

-m émulation
Émuler le émulation éditeur de liens. Vous pouvez lister les émulations disponibles avec le
--verbeux or -V options.

Si la -m l'option n'est pas utilisée, l'émulation est extraite du "LDEMULATION"
variable d'environnement, si elle est définie.

Sinon, l'émulation par défaut dépend de la façon dont l'éditeur de liens a été configuré.

-M
--print-carte
Imprimez une carte de liens vers la sortie standard. Une carte des liens fournit des informations sur les
lien, y compris les éléments suivants :

· Où les fichiers objets sont mappés dans la mémoire.

· Comment les symboles communs sont attribués.

· Tous les membres de l'archive inclus dans le lien, avec une mention du symbole qui
causé l'arrivée du membre de l'archive.

· Les valeurs affectées aux symboles.

Remarque - symboles dont les valeurs sont calculées par une expression qui implique un
la référence à une valeur précédente du même symbole peut ne pas avoir de résultat correct
affiché dans la carte des liens. C'est parce que l'éditeur de liens rejette les intermédiaires
résultats et ne conserve que la valeur finale d'une expression. Sous un tel
circonstances, l'éditeur de liens affichera la valeur finale entre crochets.
Ainsi par exemple un script linker contenant :

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

produira la sortie suivante dans la carte de liens si le -M l'option est utilisée :

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

Découvrir l' Expressions pour plus d'informations sur les expressions dans les scripts de l'éditeur de liens.

-n
--nmagic
Désactivez l'alignement des pages des sections et désactivez la liaison avec les bibliothèques partagées. Si
le format de sortie prend en charge les nombres magiques de style Unix, marquez la sortie comme "NMAGIC".

-N
--magique
Définissez les sections de texte et de données pour qu'elles soient lisibles et inscriptibles. Aussi, ne pas aligner la page
le segment de données et désactivez la liaison avec les bibliothèques partagées. Si le format de sortie
prend en charge les nombres magiques de style Unix, marquez la sortie comme "OMAGIC". Remarque : bien qu'un
la section de texte inscriptible est autorisée pour les cibles PE-COFF, elle n'est pas conforme à la
spécification de format publiée par Microsoft.

--no-omagique
Cette option annule la plupart des effets de la -N option. Il définit la section de texte sur
être en lecture seule et force le segment de données à être aligné sur la page. Remarque - cette option ne
n'active pas la liaison avec les bibliothèques partagées. Utilisation -Bdynamique pour ça.

-o sortie
--sortie=sortie
Utiliser sortie comme nom du programme produit par ld; si cette option n'est pas
spécifié, le nom a.out est utilisé par défaut. La commande de script "SORTIE" peut également
spécifiez le nom du fichier de sortie.

-O niveau
If niveau est une valeur numérique supérieure à zéro ld optimise le rendement. Cela pourrait
prendre beaucoup plus de temps et ne devrait donc probablement être activé que pour la dernière
binaire. Pour le moment, cette option n'affecte que la génération de la bibliothèque partagée ELF. Futur
les versions de l'éditeur de liens peuvent utiliser davantage cette option. Il n'y a pas non plus actuellement
différence dans le comportement de l'éditeur de liens pour différentes valeurs non nulles de cette option.
Encore une fois, cela peut changer avec les versions futures.

--état de poussée
La --état de poussée permet de conserver l'état actuel des drapeaux qui régissent le
gestion des fichiers d'entrée afin qu'ils puissent tous être restaurés avec un fichier correspondant
--état-pop option.

Les options couvertes sont : -Bdynamique, -Bstatique, -dn, -dy, -call_shared,
-non_partagé, -statique, -N, -n, --archive-entière, --no-whole-archive, -r, -Ur,
--copy-dt-needed-entries, --no-copy-dt-needed-entries, --comme requis, --no-as-besoin,
et -a.

Une cible pour cette option sont les spécifications pour pkg-config. Lorsqu'il est utilisé avec le
--libs toutes les bibliothèques éventuellement nécessaires sont répertoriées puis éventuellement liées à
tout le temps. Il est préférable de retourner quelque chose comme suit :

-Wl,--push-state,--au besoin -libone -libtwo -Wl,--pop-state

Annule l'effet de --push-state, restaure les valeurs précédentes des drapeaux régissant
gestion des fichiers d'entrée.

-q
--emit-relocs
Laissez les sections et le contenu de relocalisation dans des exécutables entièrement liés. Lien de publication
les outils d'analyse et d'optimisation peuvent avoir besoin de ces informations pour effectuer correctement
modifications des exécutables. Cela se traduit par des exécutables plus volumineux.

Cette option n'est actuellement prise en charge que sur les plates-formes ELF.

--force-dynamique
Forcer le fichier de sortie à avoir des sections dynamiques. Cette option est spécifique à VxWorks
cibles.

-r
--déplaçable
Générer une sortie déplaçable --- c'est-à-dire générer un fichier de sortie qui peut à son tour servir de
entrée à ld. C'est ce qu'on appelle souvent partiel lien. Comme effet secondaire, dans les environnements
qui prennent en charge les nombres magiques Unix standard, cette option définit également le fichier de sortie
nombre magique à "OMAGIC". Si cette option n'est pas spécifiée, un fichier absolu est
produit. Lors de la liaison de programmes C++, cette option seront pas résoudre les références à
constructeurs; pour ce faire, utilisez -Ur.

Lorsqu'un fichier d'entrée n'a pas le même format que le fichier de sortie, la liaison partielle
n'est pris en charge que si ce fichier d'entrée ne contient aucun déplacement. Différent
les formats de sortie peuvent avoir d'autres restrictions ; par exemple certains formats basés sur "a.out"
ne prennent pas du tout en charge la liaison partielle avec des fichiers d'entrée dans d'autres formats.

Cette option fait la même chose que -i.

-R nom de fichier
--just-symboles=nom de fichier
Lire les noms de symboles et leurs adresses sur nom de fichier, mais ne le déplacez pas et n'incluez pas
dans la sortie. Cela permet à votre fichier de sortie de se référer symboliquement à l'absolu
emplacements de mémoire définis dans d'autres programmes. Vous pouvez utiliser cette option plus de
une fois que.

Pour la compatibilité avec d'autres linkers ELF, si le -R l'option est suivie d'un répertoire
nom, plutôt qu'un nom de fichier, il est traité comme le -rchemin option.

-s
--strip-all
Omettez toutes les informations de symbole du fichier de sortie.

-S
--strip-débogage
Omettez les informations sur les symboles du débogueur (mais pas tous les symboles) du fichier de sortie.

-t
--trace
Imprimer les noms des fichiers d'entrée comme ld les traite.

-T Fichier de script
--script=Fichier de script
Utiliser Fichier de script comme script de l'éditeur de liens. Ce script remplace ldle script de l'éditeur de liens par défaut
(plutôt que d'y ajouter), donc fichier de commandes doit spécifier tout ce qui est nécessaire pour
décrire le fichier de sortie. Si Fichier de script n'existe pas dans le répertoire courant,
"ld" le recherche dans les répertoires spécifiés par tout précédent -L option. Plusieurs
-T les options s'accumulent.

-dT Fichier de script
--default-script=Fichier de script
Utiliser Fichier de script comme script de l'éditeur de liens par défaut.

Cette option est similaire à la --scénario sauf que le traitement du script est
retardé jusqu'à ce que le reste de la ligne de commande ait été traité. Ceci permet
options placées après le --script par défaut sur la ligne de commande pour affecter le
comportement du script de l'éditeur de liens, ce qui peut être important lorsque la ligne de commande de l'éditeur de liens
ne peut pas être directement contrôlé par l'utilisateur. (par exemple parce que la ligne de commande est
construit par un autre outil, comme gcc).

-u symbole
--undefined=symbole
Forcer symbole à saisir dans le fichier de sortie en tant que symbole indéfini. Faire cela peut,
par exemple, déclencher la liaison de modules supplémentaires à partir de bibliothèques standard. -u peut être
répété avec différents arguments d'option pour entrer des symboles non définis supplémentaires. Cette
L'option est équivalente à la commande de script de l'éditeur de liens "EXTERN".

Si cette option est utilisée pour forcer l'ajout de modules supplémentaires au lien,
et s'il s'agit d'une erreur pour que le symbole reste indéfini, alors l'option
--require-defined devrait être utilisé à la place.

--require-defined=symbole
Exiger que symbole est défini dans le fichier de sortie. Cette option est la même que l'option
--indéfini sauf que si symbole n'est pas défini dans le fichier de sortie alors l'éditeur de liens
émettra une erreur et quittera. Le même effet peut être obtenu dans un script d'éditeur de liens en
en utilisant "EXTERN", "ASSERT" et "DEFINED" ensemble. Cette option peut être utilisée plusieurs
fois pour exiger des symboles supplémentaires.

-Ur Pour tout autre chose que les programmes C++, cette option est équivalente à -r: il génère
sortie déplaçable --- c'est-à-dire un fichier de sortie qui peut à son tour servir d'entrée à ld. Quand
lier des programmes C++, -Ur résoudre les références aux constructeurs, contrairement -r. Cela fait
ne fonctionne pas à utiliser -Ur sur des fichiers eux-mêmes liés -Ur; une fois la
la table des constructeurs a été créée, elle ne peut pas être ajoutée. Utilisation -Ur seulement pour le dernier
lien partiel, et -r pour les autres.

--orphan-handling=MODE
Contrôlez la façon dont les sections orphelines sont gérées. Une section orpheline n'est pas spécifiquement
mentionné dans un script de l'éditeur de liens.

MODE peut avoir l'une des valeurs suivantes :

"endroit"
Les sections orphelines sont placées dans une section de sortie appropriée suivant la stratégie
décrit dans Orphelin sections. L'option --unique affecte également la façon dont les sections sont
mis.

"Jeter"
Toutes les sections orphelines sont jetées, en les plaçant dans le /JETER/ .

"avertir"
L'éditeur de liens placera la section orpheline comme pour "lieu" et émettra également un avertissement.

"Erreur"
L'éditeur de liens se fermera avec une erreur si une section orpheline est trouvée.

La valeur par défaut si --gestion des orphelins n'est pas donné est "lieu".

--unique[=SECTION]
Crée une section de sortie distincte pour chaque correspondance de section d'entrée SECTION, ou si le
caractère générique facultatif SECTION l'argument est manquant, pour chaque section d'entrée orpheline. Un
La section orpheline n'est pas spécifiquement mentionnée dans un script d'éditeur de liens. Vous pouvez utiliser ceci
option plusieurs fois sur la ligne de commande ; Il empêche la fusion normale des entrées
sections portant le même nom, remplaçant les affectations de section de sortie dans un script de l'éditeur de liens.

-v
--version
-V Afficher le numéro de version de ldL’écran à tuiles -V L'option répertorie également les émulations prises en charge.

-x
--discard-all
Supprimez tous les symboles locaux.

-X
--discard-locaux
Supprimez tous les symboles locaux temporaires. (Ces symboles commencent par local spécifique au système
préfixes d'étiquettes, généralement .L pour les systèmes ELF ou L pour les systèmes a.out traditionnels.)

-y symbole
--trace-symbole=symbole
Imprimer le nom de chaque fichier lié dans lequel symbole apparaît. Cette option peut être donnée
n'importe quel nombre de fois. Sur de nombreux systèmes, il est nécessaire d'ajouter un trait de soulignement.

Cette option est utile lorsque vous avez un symbole non défini dans votre lien mais que vous ne le savez pas
d'où vient la référence.

-Y chemin
Ajouter chemin au chemin de recherche de bibliothèque par défaut. Cette option existe pour Solaris
compatibilité.

-z mot-clé
Les mots-clés reconnus sont :

combleloc
Combine plusieurs sections de relocalisation et les trie pour effectuer une recherche dynamique de symboles
mise en cache possible.

def
Interdit les symboles non définis dans les fichiers objets. Symboles non définis en partage
les bibliothèques sont toujours autorisées.

pile d'exec
Marque l'objet comme nécessitant une pile exécutable.

global
Cette option n'a de sens que lors de la construction d'un objet partagé. Cela fait le
symboles définis par cet objet partagé disponibles pour la résolution de symboles de
bibliothèques chargées par la suite.

initfirst
Cette option n'a de sens que lors de la construction d'un objet partagé. Il marque l'objet
afin que son initialisation d'exécution se produise avant l'initialisation d'exécution de
tout autre objet introduit dans le processus en même temps. De même le
la finalisation à l'exécution de l'objet se produira après la finalisation à l'exécution de
tout autre objet.

interposer
Marque l'objet que sa table de symboles interpose avant tous les symboles sauf le
exécutable principal.

paresseux
Lors de la génération d'un exécutable ou d'une bibliothèque partagée, marquez-le pour indiquer à la dynamique
l'éditeur de liens pour différer la résolution des appels de fonction jusqu'au moment où la fonction est appelée
(liaison paresseuse), plutôt qu'au moment du chargement. La liaison paresseuse est la valeur par défaut.

loadfltr
Marque l'objet que ses filtres doivent être traités immédiatement au moment de l'exécution.

muldefs
Permet plusieurs définitions.

nocombreloc
Désactive la combinaison de plusieurs sections de relocalisation.

nocopyreloc
Désactiver les variables .dynbss générées par l'éditeur de liens utilisées à la place des variables définies dans
bibliothèques partagées. Peut entraîner des déplacements de texte dynamiques.

nodefaultlib
Marque l'objet que la recherche des dépendances de cet objet ignorera tout
chemins de recherche de bibliothèque par défaut.

nœudlet
Marque que l'objet ne doit pas être déchargé lors de l'exécution.

nodlopen
Marque l'objet non disponible pour "dlopen".

nodump
Marque que l'objet ne peut pas être vidé par "dldump".

pas d'exécution
Marque l'objet comme ne nécessitant pas de pile exécutable.

texte
Traitez DT_TEXTREL dans l'objet partagé comme une erreur.

pas de texte
Ne traitez pas DT_TEXTREL dans l'objet partagé comme une erreur.

texte off
Ne traitez pas DT_TEXTREL dans l'objet partagé comme une erreur.

norelro
Ne créez pas d'en-tête de segment ELF "PT_GNU_RELRO" dans l'objet.

maintenant Lors de la génération d'un exécutable ou d'une bibliothèque partagée, marquez-le pour indiquer à la dynamique
linker pour résoudre tous les symboles lorsque le programme est démarré, ou lorsque le partage
la bibliothèque est liée à l'utilisation de dlopen, au lieu de différer la résolution des appels de fonction
jusqu'au moment où la fonction est appelée pour la première fois.

origine
Marque que l'objet peut contenir $ORIGIN.

relro
Créez un en-tête de segment ELF "PT_GNU_RELRO" dans l'objet.

taille_page_max=VALORISONS
Définissez la taille de page maximale de l'émulation sur VALORISONS.

taille-de-page-commune=VALORISONS
Définissez la taille de page commune de l'émulation sur VALORISONS.

taille-pile=VALORISONS
Spécifiez une taille de pile pour un segment ELF "PT_GNU_STACK". La spécification de zéro
remplacer toute création de segment "PT_GNU_STACK" par défaut de taille différente de zéro.

bndplt
Générez toujours le préfixe BND dans les entrées PLT. Pris en charge pour Linux/x86_64.

pas de données externes protégées
Ne traitez pas le symbole de données protégé comme externe lors de la création d'une bibliothèque partagée. Cette
l'option remplace la valeur par défaut du backend de l'éditeur de liens. Il peut être utilisé pour contourner le problème
relocalisations contre les symboles de données protégés générés par le compilateur. Mises à jour sur
les symboles de données protégés par un autre module ne sont pas visibles pour le partage résultant
une bibliothèque. Pris en charge pour i386 et x86-64.

call-nop=prefix-addr
call-nop=préfixe-nop
call-nop=suffixe-nop
call-nop=préfixe-octet
call-nop=suffixe-octet
Spécifiez le remplissage "NOP" à 1 octet lors de la transformation d'un appel indirect en un
fonction définie, foo, via son emplacement GOT. call-nop=prefix-addr génère "0x67
appelez foo". call-nop=préfixe-nop génère "0x90 appel foo". call-nop=suffixe-nop
génère "call foo 0x90". call-nop=préfixe-octet génère "octet Appelez-nous foo".
call-nop=suffixe-octet génère "call foo octet". Pris en charge pour i386 et x86_64.

Les autres mots-clés sont ignorés pour la compatibilité Solaris.

-( les archives -)
--start-group les archives --end-groupe
La les archives devrait être une liste de fichiers d'archives. Ils peuvent être soit un fichier explicite
noms, ou -l options.

Les archives spécifiées sont recherchées à plusieurs reprises jusqu'à ce qu'aucune nouvelle référence non définie ne soit
créé. Normalement, une archive n'est recherchée qu'une seule fois dans l'ordre dans lequel elle est spécifiée
sur la ligne de commande. Si un symbole dans cette archive est nécessaire pour résoudre un problème non défini
symbole référencé par un objet dans une archive qui apparaît plus tard sur la ligne de commande,
l'éditeur de liens ne serait pas en mesure de résoudre cette référence. En regroupant les archives,
ils sont tous recherchés à plusieurs reprises jusqu'à ce que toutes les références possibles soient résolues.

L'utilisation de cette option a un coût de performance important. Il est préférable de ne l'utiliser que lorsque
il existe des références circulaires inévitables entre deux ou plusieurs archives.

--accept-unknown-input-arch
--no-accept-unknown-input-arch
Indique à l'éditeur de liens d'accepter les fichiers d'entrée dont l'architecture ne peut pas être reconnue. Les
l'hypothèse est que l'utilisateur sait ce qu'il fait et veut délibérément lier
dans ces fichiers d'entrée inconnus. C'était le comportement par défaut de l'éditeur de liens, avant
version 2.14. Le comportement par défaut à partir de la version 2.14 est de rejeter une telle entrée
fichiers, et ainsi le --accept-unknown-input-arch une option a été ajoutée pour restaurer l'ancien
comportement.

--comme requis
--no-as-besoin
Cette option affecte les balises ELF DT_NEEDED pour les bibliothèques dynamiques mentionnées sur la commande
ligne après le --comme requis option. Normalement, l'éditeur de liens ajoutera une balise DT_NEEDED pour
chaque bibliothèque dynamique mentionnée sur la ligne de commande, que la bibliothèque
est réellement nécessaire ou non. --comme requis provoque l'émission d'une balise DT_NEEDED uniquement pour
une bibliothèque qui at ce point in le lien satisfait un symbole indéfini non faible
référence à partir d'un fichier objet ordinaire ou, si la bibliothèque n'est pas trouvée dans le DT_NEEDED
listes d'autres bibliothèques nécessaires, une référence de symbole non définie non faible d'un autre
bibliothèque dynamique nécessaire. Fichiers objets ou bibliothèques apparaissant sur la ligne de commande après
la bibliothèque en question n'affecte pas si la bibliothèque est considérée comme nécessaire. C'est
similaire aux règles d'extraction des fichiers objets des archives. --no-as-besoin
restaure le comportement par défaut.

--ajouter-nécessaire
--aucun-ajout-nécessaire
Ces deux options ont été dépréciées en raison de la similitude de leurs noms avec le
--comme requis et --no-as-besoin option. Ils ont été remplacés par
--copy-dt-needed-entries et --no-copy-dt-needed-entries.

-affirmer mot-clé
Cette option est ignorée pour la compatibilité SunOS.

-Bdynamique
-dy
-call_shared
Lien avec les bibliothèques dynamiques. Cela n'a de sens que sur les plateformes pour lesquelles le partage
les bibliothèques sont prises en charge. Cette option est normalement la valeur par défaut sur ces plates-formes. Les
différentes variantes de cette option sont pour la compatibilité avec divers systèmes. Tu peux
utiliser cette option plusieurs fois sur la ligne de commande : cela affecte la recherche de bibliothèque pour
-l options qui le suivent.

-Bgroupe
Définissez le drapeau "DF_1_GROUP" dans l'entrée "DT_FLAGS_1" de la section dynamique. Cette
oblige l'éditeur de liens d'exécution à gérer les recherches dans cet objet et ses dépendances à être
joué uniquement à l'intérieur du groupe. --unresolved-symbols=report-all est implicite. Cette
L'option n'a de sens que sur les plates-formes ELF qui prennent en charge les bibliothèques partagées.

-Bstatique
-dn
-non_partagé
-statique
Ne pas créer de lien avec des bibliothèques partagées. Cela n'a de sens que sur les plateformes pour lesquelles
les bibliothèques partagées sont prises en charge. Les différentes variantes de cette option sont pour
compatibilité avec divers systèmes. Vous pouvez utiliser cette option plusieurs fois sur le
ligne de commande : cela affecte la recherche de la bibliothèque -l options qui le suivent. Cette
option implique également --unresolved-symbols=report-all. Cette option peut être utilisée avec
-partagé. Cela signifie qu'une bibliothèque partagée est en cours de création mais que tous les
les références externes de la bibliothèque doivent être résolues en extrayant les entrées de la statique
bibliothèques.

-Bsymbolique
Lors de la création d'une bibliothèque partagée, liez les références aux symboles globaux à la définition
dans la bibliothèque partagée, le cas échéant. Normalement, il est possible pour un programme lié
par rapport à une bibliothèque partagée pour remplacer la définition dans la bibliothèque partagée. Cette
L'option peut également être utilisée avec le --export-dynamique option, lors de la création d'un poste
exécutable indépendant, pour lier les références aux symboles globaux à la définition dans
l'exécutable. Cette option n'a de sens que sur les plateformes ELF qui prennent en charge le partage
bibliothèques et exécutables indépendants de la position.

-B-fonctions-symboliques
Lors de la création d'une bibliothèque partagée, liez les références aux symboles de fonction globale au
définition au sein de la bibliothèque partagée, le cas échéant. Cette option peut également être utilisée avec le
--export-dynamique option, lors de la création d'un exécutable indépendant de la position, de lier
références aux symboles de fonction globale à la définition dans l'exécutable. Cette
L'option n'a de sens que sur les plates-formes ELF qui prennent en charge les bibliothèques partagées et la position
exécutables indépendants.

--liste-dynamique=fichier-liste-dynamique
Spécifiez le nom d'un fichier de liste dynamique à l'éditeur de liens. Ceci est généralement utilisé lorsque
créer des bibliothèques partagées pour spécifier une liste de symboles globaux dont les références
ne doit pas être lié à la définition dans la bibliothèque partagée, ou en créant
exécutables liés dynamiquement pour spécifier une liste de symboles qui doivent être ajoutés à
la table des symboles dans l'exécutable. Cette option n'a de sens que sur les plateformes ELF
qui prennent en charge les bibliothèques partagées.

Le format de la liste dynamique est le même que le nœud de version sans portée et nœud
Nom. Voir VERSION pour plus d'information.

--dynamic-list-data
Incluez tous les symboles de données globales dans la liste dynamique.

--dynamic-list-cpp-nouveau
Fournissez la liste dynamique intégrée pour l'opérateur C++ new et delete. c'est surtout utile
pour créer une libstdc++ partagée.

--dynamic-list-cpp-typeinfo
Fournissez la liste dynamique intégrée pour l'identification du type d'exécution C++.

--vérifier-sections
--no-check-sections
Demande à l'éditeur de liens pas pour vérifier les adresses de section après leur attribution pour voir si
il y a des chevauchements. Normalement, l'éditeur de liens effectuera cette vérification, et s'il trouve
tout chevauchement, il produira des messages d'erreur appropriés. L'éditeur de liens connaît, et
tient compte des sections dans les superpositions. Le comportement par défaut peut être restauré
en utilisant le commutateur de ligne de commande --vérifier-sections. Le chevauchement des sections n'est généralement pas
vérifié les liens déplaçables. Vous pouvez forcer la vérification dans ce cas en utilisant le
--vérifier-sections option.

--copy-dt-needed-entries
--no-copy-dt-needed-entries
Cette option affecte le traitement des bibliothèques dynamiques référencées par les balises DT_NEEDED
à l'intérieur Bibliothèques dynamiques ELF mentionnées sur la ligne de commande. Normalement, l'éditeur de liens ne
ajouter une balise DT_NEEDED au binaire de sortie pour chaque bibliothèque mentionnée dans une balise DT_NEEDED
dans une bibliothèque dynamique d'entrée. Avec --copy-dt-needed-entries spécifié sur la commande
ligne cependant toutes les bibliothèques dynamiques qui la suivent auront leurs entrées DT_NEEDED
ajoutée. Le comportement par défaut peut être restauré avec --no-copy-dt-needed-entries.

Cette option a également un effet sur la résolution des symboles dans les bibliothèques dynamiques.
Avec --copy-dt-needed-entries les bibliothèques dynamiques mentionnées sur la ligne de commande seront
recherchés récursivement, en suivant leurs balises DT_NEEDED vers d'autres bibliothèques, afin de
résoudre les symboles requis par le binaire de sortie. Avec le réglage par défaut, cependant, le
la recherche des bibliothèques dynamiques qui la suivent s'arrêtera avec la bibliothèque dynamique
lui-même. Aucun lien DT_NEEDED ne sera parcouru pour résoudre les symboles.

--cref
Sortez une table de références croisées. Si un fichier de mappage de l'éditeur de liens est généré, la croix
la table de référence est imprimée dans le fichier de carte. Sinon, il est imprimé sur la norme
sortie.

Le format du tableau est volontairement simple, de sorte qu'il puisse être facilement traité par
un script si nécessaire. Les symboles sont imprimés, triés par nom. Pour chaque symbole,
une liste de noms de fichiers est fournie. Si le symbole est défini, le premier fichier répertorié est le
emplacement de la définition. Si le symbole est défini comme une valeur commune, alors tous les fichiers
où cela se produit apparaît ensuite. Enfin, tous les fichiers faisant référence au symbole sont
listé.

--no-define-common
Cette option interdit l'affectation d'adresses à des symboles communs. Le script
la commande "INHIBIT_COMMON_ALLOCATION" a le même effet.

La --no-define-common L'option permet de découpler la décision d'attribuer des adresses à
Symboles communs issus du choix du type de fichier de sortie ; sinon un non déplaçable
le type de sortie force l'affectation d'adresses aux symboles communs. À l'aide de --no-define-common
permet d'attribuer des symboles communs référencés à partir d'une bibliothèque partagée
adresses uniquement dans le programme principal. Cela élimine l'espace en double inutilisé dans le
bibliothèque partagée, et empêche également toute confusion possible sur la résolution de la mauvaise
dupliquer lorsqu'il existe de nombreux modules dynamiques avec des chemins de recherche spécialisés pour
résolution des symboles d'exécution.

--defsym=symbole=expression
Créez un symbole global dans le fichier de sortie, contenant l'adresse absolue donnée par
expression. Vous pouvez utiliser cette option autant de fois que nécessaire pour définir plusieurs
symboles dans la ligne de commande. Une forme limitée d'arithmétique est prise en charge pour le
expression dans ce contexte : vous pouvez donner une constante hexadécimale ou le nom d'un
symbole existant, ou utilisez "+" et "-" pour ajouter ou soustraire des constantes hexadécimales ou
symboles. Si vous avez besoin d'expressions plus élaborées, pensez à utiliser la commande de l'éditeur de liens
langue à partir d'un script. Remarque: il ne doit pas y avoir d'espace blanc entre symbole, les
signe égal ("="), et expression.

--demangle[=style]
--no-demangle
Ces options contrôlent s'il faut démêler les noms de symboles dans les messages d'erreur et autres
sortir. Lorsque l'éditeur de liens reçoit l'ordre de démêler, il essaie de présenter les noms de symboles dans un
mode lisible : il supprime les traits de soulignement de début s'ils sont utilisés par le fichier objet
format et convertit les noms de symboles mutilés C++ en noms lisibles par l'utilisateur. Différent
les compilateurs ont des styles de mutilation différents. L'argument de style de démêlage facultatif peut
être utilisé pour choisir un style de démêlage approprié pour votre compilateur. L'éditeur de liens sera
demangle par défaut à moins que la variable d'environnement COLLECT_NO_DEMANGLE est réglé. Ces
Les options peuvent être utilisées pour remplacer la valeur par défaut.

-Ifilet
--dynamic-linker=filet
Définissez le nom de l'éditeur de liens dynamique. Ceci n'a de sens que lors de la génération
exécutables ELF liés dynamiquement. L'éditeur de liens dynamique par défaut est normalement correct ;
ne l'utilisez pas à moins que vous ne sachiez ce que vous faites.

--no-dynamic-linker
Lors de la production d'un fichier exécutable, omettez la demande d'un éditeur de liens dynamique à utiliser à
temps de chargement. Cela n'a de sens que pour les exécutables ELF qui contiennent des
réinstallations, et nécessite généralement un code de point d'entrée capable de traiter ces
déménagements.

--fatal-warnings
--no-fatal-warnings
Traitez tous les avertissements comme des erreurs. Le comportement par défaut peut être restauré avec l'option
--no-fatal-warnings.

--force-exe-suffixe
Assurez-vous qu'un fichier de sortie a un suffixe .exe.

Si un fichier de sortie entièrement lié créé avec succès n'a pas de ".exe" ou ".dll"
suffixe, cette option force l'éditeur de liens à copier le fichier de sortie sur l'un du même nom
avec un suffixe ".exe". Cette option est utile lors de l'utilisation de makefiles Unix non modifiés sur un
Hôte Microsoft Windows, car certaines versions de Windows n'exécuteront pas d'image à moins qu'elle
se termine par un suffixe ".exe".

--gc-sections
--no-gc-sections
Activez le ramasse-miettes des sections d'entrée inutilisées. Il est ignoré sur les cibles qui ne
ne prend pas en charge cette option. Le comportement par défaut (de ne pas effectuer cette poubelle
collection) peut être restauré en spécifiant --no-gc-sections sur la ligne de commande. Noter
que le ramasse-miettes pour les cibles au format COFF et PE est pris en charge, mais le
la mise en œuvre est actuellement considérée comme expérimentale.

--gc-sections décide quelles sections d'entrée sont utilisées en examinant les symboles et
déménagements. La section contenant le symbole d'entrée et toutes les sections contenant
les symboles non définis sur la ligne de commande seront conservés, de même que les sections contenant
symboles référencés par des objets dynamiques. Notez que lors de la création de bibliothèques partagées, le
l'éditeur de liens doit supposer que tout symbole visible est référencé. Une fois cet ensemble initial de
sections a été déterminée, l'éditeur de liens marque récursivement comme utilisé toute section
référencés par leurs déménagements. Voir --entrée et --indéfini.

Cette option peut être paramétrée lors d'un lien partiel (activée avec l'option -r). Dans ce
cas la racine des symboles conservés doit être explicitement spécifiée soit par un --entrée or
--indéfini option ou par une commande "ENTRY" dans le script de l'éditeur de liens.

--print-gc-sections
--no-print-gc-sections
Répertoriez toutes les sections supprimées par le ramasse-miettes. La liste est imprimée sur stderr.
Cette option n'est effective que si le ramasse-miettes a été activé via le
--gc-sections) option. Le comportement par défaut (de ne pas lister les sections qui sont
supprimé) peut être restauré en spécifiant --no-print-gc-sections sur la ligne de commande.

--print-output-format
Imprimer le nom du format de sortie par défaut (peut-être influencé par une autre ligne de commande
option). C'est la chaîne qui apparaîtrait dans un script d'éditeur de liens "OUTPUT_FORMAT"
commander.

--print-memory-utilisation
Imprimer la taille utilisée, la taille totale et la taille utilisée des régions de mémoire créées avec le MÉMOIRE
commander. Ceci est utile sur les cibles intégrées pour avoir une vue rapide de la quantité de libre
Mémoire. Le format de la sortie a un titre et une ligne par région. Il est
à la fois lisible par l'homme et facilement analysable par des outils. Voici un exemple de sortie :

Région mémoire utilisée Taille Région Taille %age utilisé
ROM : 256 Ko 1 Mo 25.00 %
RAM : 32 Go 2 Go 0.00 %

--Aidez-moi
Imprimez un résumé des options de ligne de commande sur la sortie standard et quittez.

--target-help
Imprimez un résumé de toutes les options spécifiques à la cible sur la sortie standard et quittez.

-Carte=mapfile
Imprimer une carte de liens vers le fichier mapfile. Voir la description du -M option, ci-dessus.

--no-keep-memory
ld optimise normalement la vitesse par rapport à l'utilisation de la mémoire en mettant en cache les tables de symboles de
fichiers d'entrée en mémoire. Cette option indique ld à la place d'optimiser l'utilisation de la mémoire, en
relire les tables de symboles si nécessaire. Cela peut être nécessaire si ld manque de
de l'espace mémoire tout en liant un gros exécutable.

--no-undefined
-z def
Signalez les références de symboles non résolues à partir de fichiers d'objets normaux. Ceci est fait même si
l'éditeur de liens crée une bibliothèque partagée non symbolique. L'interrupteur
--[no-]allow-shlib-undefined contrôle le comportement des rapports non résolus
références trouvées dans les bibliothèques partagées liées.

--allow-multiple-definition
-z muldefs
Normalement, lorsqu'un symbole est défini plusieurs fois, l'éditeur de liens signalera une erreur fatale
Erreur. Ces options permettent plusieurs définitions et la première définition sera utilisée.

--allow-shlib-undefined
--no-allow-shlib-undefined
Autorise ou interdit les symboles non définis dans les bibliothèques partagées. Ce commutateur est similaire à
--no-undefined sauf qu'il détermine le comportement lorsque les symboles non définis sont
dans une bibliothèque partagée plutôt que dans un fichier objet ordinaire. Cela n'affecte pas la façon dont
les symboles non définis dans les fichiers objets normaux sont traités.

Le comportement par défaut est de signaler les erreurs pour tous les symboles non définis référencés dans
bibliothèques partagées si l'éditeur de liens est utilisé pour créer un exécutable, mais pour permettre
eux si l'éditeur de liens est utilisé pour créer une bibliothèque partagée.

Les raisons d'autoriser les références de symboles non définies dans les bibliothèques partagées spécifiées à
le temps de liaison sont les suivants :

· Une bibliothèque partagée spécifiée au moment de la liaison peut ne pas être la même que celle qui est
disponible au moment du chargement, de sorte que le symbole peut en fait être résolu au moment du chargement.

· Il existe certains systèmes d'exploitation, par exemple BeOS et HPPA, où des symboles non définis dans
les bibliothèques partagées sont normales.

Le noyau BeOS par exemple corrige les bibliothèques partagées au moment du chargement pour sélectionner
quelle que soit la fonction la plus appropriée pour l'architecture actuelle. C'est
utilisé, par exemple, pour sélectionner dynamiquement une fonction memset appropriée.

--no-undefined-version
Normalement, lorsqu'un symbole a une version indéfinie, l'éditeur de liens l'ignore. Cette
L'option interdit les symboles avec une version non définie et une erreur fatale sera émise
au lieu.

--default-symver
Créez et utilisez une version de symbole par défaut (le sonname) pour les symboles exportés sans version.

--default-importé-symver
Créez et utilisez une version de symbole par défaut (le sonname) pour les symboles importés non versionnés.

--no-warn-mismatch
Normalement ld donnera une erreur si vous essayez de lier ensemble des fichiers d'entrée qui sont
incompatibles pour une raison quelconque, peut-être parce qu'ils ont été compilés pour différents
processeurs ou pour différents endiannesses. Cette option indique ld qu'il devrait
permettre silencieusement de telles erreurs possibles. Cette option ne doit être utilisée qu'avec précaution, en
cas où vous avez pris des mesures spéciales qui garantissent que les erreurs de l'éditeur de liens sont
inappropriée.

--no-warn-search-mismatch
Normalement ld donnera un avertissement s'il trouve une bibliothèque incompatible lors d'une bibliothèque
chercher. Cette option fait taire l'avertissement.

--no-whole-archive
Désactiver l'effet de la --archive-entière option pour les fichiers d'archives suivants.

--noinhibit-exec
Conservez le fichier de sortie exécutable chaque fois qu'il est encore utilisable. Normalement, l'éditeur de liens
ne produira pas de fichier de sortie s'il rencontre des erreurs pendant le processus de liaison ; ce
se ferme sans écrire de fichier de sortie lorsqu'il émet une erreur quelle qu'elle soit.

-nostdlib
Recherchez uniquement les répertoires de bibliothèque explicitement spécifiés sur la ligne de commande. Une bibliothèque
répertoires spécifiés dans les scripts de l'éditeur de liens (y compris les scripts de l'éditeur de liens spécifiés sur le
ligne de commande) sont ignorés.

--oformat=format de sortie
ld peut être configuré pour prendre en charge plus d'un type de fichier objet. Si votre ld is
configuré de cette façon, vous pouvez utiliser le --oformat option pour spécifier le format binaire pour
le fichier objet de sortie. Même quand ld est configuré pour prendre en charge un objet alternatif
formats, vous n'avez généralement pas besoin de le spécifier, car ld doit être configuré pour produire
comme format de sortie par défaut le format le plus courant sur chaque machine. format de sortie est
chaîne de texte, le nom d'un format particulier pris en charge par les bibliothèques BFD. (Vous pouvez
lister les formats binaires disponibles avec objdump -i.) La commande de script
"OUTPUT_FORMAT" peut également spécifier le format de sortie, mais cette option le remplace.

-tarte
--pic-exécutable
Créez un exécutable indépendant de la position. Ceci n'est actuellement pris en charge que sur ELF
plates-formes. Les exécutables indépendants de la position sont similaires aux bibliothèques partagées en ce sens
ils sont déplacés par l'éditeur de liens dynamique vers l'adresse virtuelle choisie par le système d'exploitation
eux (qui peuvent varier entre les invocations). Comme les exécutables normaux liés dynamiquement
ils peuvent être exécutés et les symboles définis dans l'exécutable ne peuvent pas être remplacés par
bibliothèques partagées.

-qmagie
Cette option est ignorée pour la compatibilité Linux.

-Qy Cette option est ignorée pour la compatibilité SVR4.

--se détendre
--pas de détente
Une option avec des effets dépendants de la machine. Cette option n'est prise en charge que sur quelques
cibles.

Sur certaines plates-formes, le --se détendre l'option effectue des optimisations globales spécifiques à la cible
qui deviennent possibles lorsque l'éditeur de liens résout l'adressage dans le programme, comme
assouplir les modes d'adresse, synthétiser de nouvelles instructions, sélectionner une version plus courte de
instructions en cours et combiner des valeurs constantes.

Sur certaines plates-formes, ces optimisations globales du temps de liaison peuvent rendre le débogage symbolique de
l'exécutable résultant impossible. C'est connu pour être le cas pour le Matsushita
Famille de processeurs MN10200 et MN10300.

Sur les plates-formes où cela n'est pas pris en charge, --se détendre est accepté, mais ignoré.

Sur les plateformes où --se détendre est acceptée l'option --pas de détente peut être utilisé pour désactiver
la fonctionnalité.

--retain-symbols-file=nom de fichier
Conserver uniquement. les symboles répertoriés dans le fichier nom de fichier, en écartant tous les autres. nom de fichier
est simplement un fichier plat, avec un nom de symbole par ligne. Cette option est particulièrement
utile dans les environnements (tels que VxWorks) où une grande table de symboles globale est
accumulés progressivement, pour conserver la mémoire d'exécution.

--retain-symbols-file pas rejeter les symboles non définis ou les symboles nécessaires pour
déménagements.

Vous ne pouvez spécifier que --retain-symbols-file une fois dans la ligne de commande. Il remplace -s
et -S.

-rchemin=dir
Ajoutez un répertoire au chemin de recherche de la bibliothèque d'exécution. Ceci est utilisé lors de la liaison d'un ELF
exécutable avec des objets partagés. Tous -rchemin les arguments sont concaténés et passés à
l'éditeur de liens d'exécution, qui les utilise pour localiser les objets partagés lors de l'exécution. Les -rchemin
L'option est également utilisée lors de la localisation d'objets partagés nécessaires aux objets partagés
explicitement inclus dans le lien ; voir la description du -rpath-link option. Si
-rchemin n'est pas utilisé lors de la liaison d'un exécutable ELF, le contenu de l'environnement
La variable "LD_RUN_PATH" sera utilisée si elle est définie.

La -rchemin L'option peut également être utilisée sur SunOS. Par défaut, sur SunOS, l'éditeur de liens
former un chemin de recherche d'exécution parmi tous les -L options qui lui sont données. Si un -rchemin option
est utilisé, le chemin de recherche d'exécution sera formé exclusivement à l'aide du -rchemin options,
ignorant le -L option. Cela peut être utile lors de l'utilisation de gcc, qui ajoute de nombreux -L
options qui peuvent se trouver sur les systèmes de fichiers montés NFS.

Pour la compatibilité avec d'autres linkers ELF, si le -R l'option est suivie d'un répertoire
nom, plutôt qu'un nom de fichier, il est traité comme le -rchemin option.

-rpath-link=dir
Lorsque vous utilisez ELF ou SunOS, une bibliothèque partagée peut en nécessiter une autre. Cela se produit lorsqu'un
Le lien "ld -shared" inclut une bibliothèque partagée comme l'un des fichiers d'entrée.

Lorsque l'éditeur de liens rencontre une telle dépendance lors d'une opération non partagée, non déplaçable
lien, il essaiera automatiquement de localiser la bibliothèque partagée requise et de l'inclure
dans le lien, s'il n'est pas inclus explicitement. Dans un tel cas, le -rpath-link option
spécifie le premier ensemble de répertoires à rechercher. Les -rpath-link option peut spécifier
une séquence de noms de répertoires soit en spécifiant une liste de noms séparés par
deux-points, ou en apparaissant plusieurs fois.

Cette option doit être utilisée avec prudence car elle remplace le chemin de recherche qui peut avoir
été dur compilé dans une bibliothèque partagée. Dans un tel cas, il est possible d'utiliser
involontairement un chemin de recherche différent de celui de l'éditeur de liens d'exécution.

L'éditeur de liens utilise les chemins de recherche suivants pour localiser les bibliothèques partagées requises :

1. Tous les répertoires spécifiés par -rpath-link options.

2. Tous les répertoires spécifiés par -rchemin option. La différence entre -rchemin et
-rpath-link est-ce que les répertoires spécifiés par -rchemin les options sont incluses dans le
exécutable et utilisé au moment de l'exécution, tandis que le -rpath-link l'option n'est efficace que
au moment de la liaison. Recherche -rchemin de cette manière n'est pris en charge que par les linkers natifs et
réticulants qui ont été configurés avec le --with-sysroot option.

3. Sur un système ELF, pour les linkers natifs, si le -rchemin et -rpath-link les options étaient
non utilisé, recherchez le contenu de la variable d'environnement "LD_RUN_PATH".

4. Sous SunOS, si le -rchemin l'option n'a pas été utilisée, recherchez les répertoires spécifiés
en utilisant -L options.

5. Pour un éditeur de liens natif, recherchez le contenu de la variable d'environnement
"LD_LIBRARY_PATH".

6. Pour un linker ELF natif, les répertoires dans "DT_RUNPATH" ou "DT_RPATH" d'un
bibliothèque sont recherchés pour les bibliothèques partagées dont elle a besoin. Les entrées "DT_RPATH" sont
ignoré si des entrées "DT_RUNPATH" existent.

7. Les répertoires par défaut, normalement / lib et / usr / lib.

8. Pour un éditeur de liens natif sur un système ELF, si le fichier /etc/ld.so.conf existe, la liste
de répertoires trouvés dans ce fichier.

Si la bibliothèque partagée requise n'est pas trouvée, l'éditeur de liens émettra un avertissement et
continuer avec le lien.

-partagé
-B partageable
Créez une bibliothèque partagée. Ceci n'est actuellement pris en charge que sur ELF, XCOFF et SunOS
plates-formes. Sous SunOS, l'éditeur de liens créera automatiquement une bibliothèque partagée si le -e
n'est pas utilisée et il y a des symboles non définis dans le lien.

--sort-commun
--sort-common=ascendant
--sort-common=décroissant
Cette option indique ld pour trier les symboles communs par alignement dans l'ordre croissant ou
ordre décroissant lorsqu'il les place dans les sections de sortie appropriées. Le symbole
les alignements considérés sont de seize octets ou plus, huit octets, quatre octets, deux octets et
un octet. Cela permet d'éviter les écarts entre les symboles dus aux contraintes d'alignement. Sinon
l'ordre de tri est spécifié, puis l'ordre décroissant est supposé.

--sort-section=nom
Cette option appliquera "SORT_BY_NAME" à tous les modèles de section génériques dans l'éditeur de liens
scripts.

--sort-section=alignement
Cette option appliquera "SORT_BY_ALIGNMENT" à tous les modèles de section génériques dans le
script de l'éditeur de liens.

--split-by-file[=taille]
Similaire à --split-by-reloc mais crée une nouvelle section de sortie pour chaque fichier d'entrée lorsque
taille est atteinte. taille par défaut à une taille de 1 si elle n'est pas donnée.

--split-by-reloc[=compter]
Essaie de créer des sections supplémentaires dans le fichier de sortie afin qu'aucune section de sortie ne soit
le fichier contient plus de compter déménagements. Ceci est utile lors de la génération d'énormes
fichiers déplaçables à télécharger dans certains noyaux temps réel avec l'objet COFF
format de fichier; puisque COFF ne peut représenter plus de 65535 déménagements en une seule
section. Notez que cela ne fonctionnera pas avec les formats de fichier objet qui ne
prendre en charge les sections arbitraires. L'éditeur de liens ne divisera pas les sections d'entrée individuelles
pour la redistribution, donc si une seule section d'entrée contient plus de compter déménagements
une section de sortie contiendra autant de relocalisations. compter par défaut à une valeur de
32768.

--Statistiques
Calculer et afficher des statistiques sur le fonctionnement de l'éditeur de liens, telles que l'exécution
utilisation du temps et de la mémoire.

--sysroot=annuaire
Utiliser annuaire comme emplacement de la racine système, remplaçant la valeur par défaut de configure-time.
Cette option n'est prise en charge que par les éditeurs de liens qui ont été configurés à l'aide de --with-sysroot.

--format-traditionnel
Pour certaines cibles, la sortie de ld est différent à certains égards de la sortie de certains
éditeur de liens existant. Ce commutateur demande ld d'utiliser le format traditionnel à la place.

Par exemple, sur SunOS, ld combine les entrées en double dans la table de chaînes de symboles. Cette
peut réduire la taille d'un fichier de sortie avec des informations de débogage complètes de plus de 30
pour cent. Malheureusement, le programme SunOS "dbx" ne peut pas lire le programme résultant
("gdb" n'a aucun problème). Les --format-traditionnel l'interrupteur dit ld ne pas combiner
entrées en double.

--section-start=Nom de la section=org
Localisez une section dans le fichier de sortie à l'adresse absolue donnée par org. Vous pouvez utiliser
cette option autant de fois que nécessaire pour localiser plusieurs sections dans la commande
ligne. org doit être un seul entier hexadécimal ; pour la compatibilité avec d'autres linkers,
vous pouvez omettre le premier 0x généralement associé à des valeurs hexadécimales. Remarque:
ne devrait pas y avoir d'espace blanc entre Nom de la section, le signe égal ("="), et org.

-Tbs=org
-Tdonnées=org
-Ttexte=org
Pareil que --section-start, avec ".bss", ".data" ou ".text" comme Nom de la section.

-Tsegment-texte=org
Lors de la création d'un exécutable ELF, il définira l'adresse du premier octet du texte
segment.

-Trodata-segment=org
Lors de la création d'un exécutable ELF ou d'un objet partagé pour une cible où les données en lecture seule
est dans son propre segment séparé du texte exécutable, il définira l'adresse de
le premier octet du segment de données en lecture seule.

-Tldata-segment=org
Lors de la création d'un exécutable ELF ou d'un objet partagé pour le modèle de mémoire moyenne x86-64, il
définira l'adresse du premier octet du segment ldata.

--symboles-non résolus=méthode
Déterminez comment gérer les symboles non résolus. Il y a quatre valeurs possibles pour
méthode:

ignorer tout
Ne signalez aucun symbole non résolu.

rapport-tout
Signalez tous les symboles non résolus. C'est la valeur par défaut.

ignorer-dans-les-fichiers-objet
Signaler les symboles non résolus contenus dans les bibliothèques partagées, mais les ignorer
s'ils proviennent de fichiers objets normaux.

ignore-in-shared-libs
Signalez les symboles non résolus provenant de fichiers objets normaux, mais ignorez-les si
ils proviennent de bibliothèques partagées. Cela peut être utile lors de la création d'une dynamique
binaire et il est connu que toutes les bibliothèques partagées qu'il devrait référencer
sont inclus sur la ligne de commande de l'éditeur de liens.

Le comportement des bibliothèques partagées peut également être contrôlé par le
--[no-]allow-shlib-undefined option.

Normalement, l'éditeur de liens générera un message d'erreur pour chaque symbole non résolu signalé
mais l'option --warn-unresolved-symbols peut changer cela en un avertissement.

--dll-verbeux
--verbeux[=NUMÉRO]
Afficher le numéro de version de ld et répertoriez les émulations d'éditeur de liens prises en charge. Affichage
quels fichiers d'entrée peuvent et ne peuvent pas être ouverts. Afficher le script de l'éditeur de liens utilisé par
l'éditeur de liens. Si l'optionnel NUMÉRO argument > 1, le statut du symbole du plugin sera également
affiché.

--version-script=version-scriptfile
Spécifiez le nom d'un script de version à l'éditeur de liens. Ceci est généralement utilisé lorsque
création de bibliothèques partagées pour spécifier des informations supplémentaires sur la version
hiérarchie pour la bibliothèque en cours de création. Cette option n'est entièrement prise en charge que sur ELF
plates-formes qui prennent en charge les bibliothèques partagées ; voir VERSION. Il est partiellement pris en charge sur
Plateformes PE, qui peuvent utiliser des scripts de version pour filtrer la visibilité des symboles dans l'exportation automatique
mode : tous les symboles marqués locales dans le script de version ne sera pas exporté.

--warn-commun
Avertir lorsqu'un symbole commun est combiné avec un autre symbole commun ou avec un symbole
définition. Les linkers Unix permettent cette pratique quelque peu bâclée, mais les linkers sur certains
les autres systèmes d'exploitation ne le font pas. Cette option vous permet de trouver des problèmes potentiels
de combiner des symboles globaux. Malheureusement, certaines bibliothèques C utilisent cette pratique, donc
vous pouvez recevoir des avertissements concernant les symboles dans les bibliothèques ainsi que dans vos programmes.

Il existe trois types de symboles globaux, illustrés ici par des exemples en C :

int i = 1;
Une définition, qui va dans la section des données initialisées du fichier de sortie.

externe int i;
Une référence non définie, qui n'alloue pas d'espace. Il doit y avoir soit un
définition ou un symbole commun pour la variable quelque part.

int i;
Un symbole commun. S'il n'y a que (un ou plusieurs) symboles communs pour une variable,
il va dans la zone de données non initialisées du fichier de sortie. L'éditeur de liens fusionne
plusieurs symboles communs pour la même variable en un seul symbole. Si ils sont
de différentes tailles, il choisit la plus grande taille. L'éditeur de liens devient un symbole commun
dans une déclaration, s'il existe une définition de la même variable.

La --warn-commun L'option peut produire cinq types d'avertissements. Chaque avertissement consiste en
une paire de lignes : la première décrit le symbole que l'on vient de rencontrer, et la seconde
décrit le symbole précédent rencontré avec le même nom. L'un ou les deux
les symboles seront un symbole commun.

1. Transformer un symbole commun en référence, car il existe déjà une définition
pour le symbole.

( ): avertissement: commun de ` '
supplanté par définition
( ) : avertissement : défini ici

2. Transformer un symbole commun en référence, car une définition ultérieure du
symbole est rencontré. C'est le même cas que le cas précédent, sauf que le
les symboles sont rencontrés dans un ordre différent.

( ): avertissement : définition de ` '
commun prioritaire
( ): avertissement: commun est ici

3. Fusion d'un symbole commun avec un symbole commun précédent de même taille.

( ): avertissement: commun multiple
de ` '
( ): avertissement: le commun précédent est ici

4. Fusion d'un symbole commun avec un symbole commun plus grand précédent.

( ): avertissement: commun de ` '
remplacé par un plus grand commun
( ): avertissement: le plus grand commun est ici

5. Fusion d'un symbole commun avec un ancien symbole commun plus petit. C'est le même
comme le cas précédent, sauf que les symboles sont rencontrés dans un autre
ordre.

( ): avertissement: commun de ` '
plus petit commun
( ): avertissement: le plus petit commun est ici

--warn-constructeurs
Avertir si des constructeurs globaux sont utilisés. Ceci n'est utile que pour quelques fichiers objets
formatage. Pour les formats comme COFF ou ELF, l'éditeur de liens ne peut pas détecter l'utilisation de global
constructeurs.

--warn-multiple-gp
Avertir si plusieurs valeurs de pointeur global sont requises dans le fichier de sortie. C'est seulement
significatif pour certains processeurs, comme l'Alpha. Plus précisément, certains processeurs
placez les constantes de grande valeur dans une section spéciale. Un registre spécial (le registre mondial
pointeur) pointe au milieu de cette section, afin que les constantes puissent être chargées
efficacement via un mode d'adressage relatif du registre de base. Étant donné que le décalage en base-
le mode relatif du registre est fixe et relativement petit (par exemple, 16 bits), cela limite le
taille maximale du pool constant. Ainsi, dans les grands programmes, il est souvent nécessaire de
utiliser plusieurs valeurs de pointeur global afin de pouvoir adresser tous les possibles
constantes. Cette option provoque l'émission d'un avertissement chaque fois que ce cas se produit.

--warn-une fois
N'avertir qu'une seule fois pour chaque symbole non défini, plutôt qu'une fois par module qui fait référence à
le

--warn-section-align
Avertir si l'adresse d'une section de sortie est modifiée en raison de l'alignement. Typiquement,
l'alignement sera défini par une section d'entrée. L'adresse ne sera modifiée que si elle
pas explicitement spécifié ; c'est-à-dire, si la commande "SECTIONS" ne spécifie pas de début
l'adresse de la section.

--warn-shared-textrel
Avertir si l'éditeur de liens ajoute un DT_TEXTREL à un objet partagé.

--warn-alternate-em
Avertir si un objet a un autre code machine ELF.

--warn-unresolved-symbols
Si l'éditeur de liens va signaler un symbole non résolu (voir l'option
--symboles non résolus), il générera normalement une erreur. Cette option permet
générer un avertissement à la place.

--error-unresolved-symbols
Cela restaure le comportement par défaut de l'éditeur de liens de génération d'erreurs lorsqu'il signale
symboles non résolus.

--archive-entière
Pour chaque archive mentionnée sur la ligne de commande après le --archive-entière option,
inclure chaque fichier objet dans l'archive dans le lien, plutôt que de rechercher le
archive pour les fichiers objet requis. Ceci est normalement utilisé pour transformer un fichier d'archive
dans une bibliothèque partagée, forçant chaque objet à être inclus dans la bibliothèque partagée résultante
une bibliothèque. Cette option peut être utilisée plusieurs fois.

Deux remarques lors de l'utilisation de cette option de gcc : d'abord, gcc ne connaît pas cette option,
donc il faut utiliser -Wl,-archive-entière. Deuxièmement, n'oubliez pas d'utiliser
-Wl,-pas-d'archive-entière après votre liste d'archives, car gcc ajoutera sa propre liste
d'archives à votre lien et vous ne voudrez peut-être pas que ce drapeau les affecte également.

--envelopper=symbole
Utilisez une fonction wrapper pour symbole. Toute référence indéfinie à symbole sera résolu
Envelopper_symbole". Toute référence non définie à "__real_symbole" sera résolu à
symbole.

Cela peut être utilisé pour fournir un wrapper pour une fonction système. La fonction wrapper
devrait s'appeler "__wrap_symbole". S'il souhaite appeler la fonction système, il doit
appelez "__réel_symbole".

Voici un exemple trivial :

annuler *
__wrap_malloc (taille_t c)
{
printf ("malloc appelé avec %zu\n", c);
renvoie __real_malloc (c);
}

Si vous liez un autre code avec ce fichier en utilisant --envelopper malloc, puis tous les appels à "malloc"
appellera la fonction "__wrap_malloc" à la place. L'appel à "__real_malloc" dans
"__wrap_malloc" appellera la vraie fonction "malloc".

Vous pouvez également fournir une fonction "__real_malloc", afin que les liens sans le
--envelopper option réussira. Si vous faites cela, vous ne devriez pas mettre la définition de
"__real_malloc" dans le même fichier que "__wrap_malloc" ; si vous le faites, l'assembleur peut
résoudre l'appel avant que l'éditeur de liens n'ait la possibilité de l'envelopper dans "malloc".

--eh-frame-hdr
Demander la création de la section ".eh_frame_hdr" et de l'en-tête du segment ELF "PT_GNU_EH_FRAME".

--no-ld-generated-unwind-info
Demander la création d'informations de déroulement ".eh_frame" pour les sections de code générées par l'éditeur de liens telles que
PLT. Cette option est activée par défaut si les informations de déroulement générées par l'éditeur de liens sont prises en charge.

--enable-new-dtags
--disable-new-dtags
Cet éditeur de liens peut créer les nouvelles balises dynamiques dans ELF. Mais les anciens systèmes ELF peuvent ne pas
les comprendre. Si vous spécifiez --enable-new-dtags, les nouvelles balises dynamiques seront
créés selon les besoins et les anciennes balises dynamiques seront omises. Si vous spécifiez
--disable-new-dtags, aucune nouvelle balise dynamique ne sera créée. Par défaut, la nouvelle dynamique
les balises ne sont pas créées. Notez que ces options ne sont disponibles que pour les systèmes ELF.

--hash-taille=nombre
Définissez la taille par défaut des tables de hachage de l'éditeur de liens sur un nombre premier proche de nombre.
L'augmentation de cette valeur peut réduire le temps nécessaire à l'éditeur de liens pour effectuer son
tâches, au détriment de l'augmentation des besoins en mémoire de l'éditeur de liens. de la même manière
réduire cette valeur peut réduire les besoins en mémoire au détriment de la vitesse.

--hash-style=style
Définissez le type de table(s) de hachage de l'éditeur de liens. style peut être soit "sysv" pour ELF classique
section ".hash", "gnu" pour le nouveau style GNU section ".gnu.hash" ou "both" pour les deux
les tables de hachage ELF classiques ".hash" et le nouveau style GNU ".gnu.hash". La valeur par défaut est "sysv".

--compress-debug-sections=aucun
--compress-debug-sections=zlib
--compress-debug-sections=zlib-gnu
--compress-debug-sections=zlib-gabi
Sur les plates-formes ELF, ces options contrôlent la manière dont les sections de débogage DWARF sont compressées à l'aide de
zlib. --compress-debug-sections=aucun ne compresse pas les sections de débogage DWARF.
--compress-debug-sections=zlib-gnu compresse les sections de débogage DWARF et renomme le débogage
noms de section pour commencer .zdebug au lieu de .déboguer. --compress-debug-sections=zlib
et --compress-debug-sections=zlib-gabi compresser les sections de débogage DWARF avec
SHF_COMPRESSED de l'ABI ELF. Le comportement par défaut varie selon le
cible impliquée et les options de configuration utilisées pour construire la chaîne d'outils. Le défaut
peut être déterminé en examinant la sortie de l'éditeur de liens --Aidez-moi option.

--reduce-memory-overheads
Cette option réduit les besoins en mémoire au moment de l'exécution de ld, au détriment de la liaison
la vitesse. Ceci a été introduit pour sélectionner l'ancien algorithme O(n^2) pour le fichier de mappage de liens
génération, plutôt que le nouvel algorithme O(n) qui utilise environ 40 % de mémoire en plus pour
stockage de symboles.

Un autre effet du commutateur est de définir la taille de la table de hachage par défaut à 1021, ce qui
économise à nouveau de la mémoire au prix d'un allongement du temps d'exécution de l'éditeur de liens. Ce n'est pas fait
cependant si le --hash-taille l'interrupteur a été utilisé.

La --reduce-memory-overheads peut également être utilisé pour permettre d'autres compromis dans
futures versions de l'éditeur de liens.

--build-id
--build-id=style
Demander la création d'une section de note ELF ".note.gnu.build-id" ou d'un COFF ".buildid"
section. Le contenu de la note sont des bits uniques identifiant ce fichier lié.
style peut être "uuid" pour utiliser 128 bits aléatoires, "sha1" pour utiliser un hachage SHA160 1 bits sur le
parties normatives du contenu de sortie, "md5" pour utiliser un hachage MD128 5 bits sur le
parties normatives du contenu de sortie, ou "0xchaîne hexadécimale" utiliser une chaîne de bits choisie
spécifié comme un nombre pair de chiffres hexadécimaux ("-" et ":" caractères entre
les paires de chiffres sont ignorées). Si style est omis, "sha1" est utilisé.

Les styles "md5" et "sha1" produisent un identifiant toujours le même dans un
fichier de sortie identique, mais sera unique parmi tous les fichiers de sortie non identiques. Il est
pas destiné à être comparé comme une somme de contrôle pour le contenu du fichier. Un fichier lié peut
être modifié ultérieurement par d'autres outils, mais la chaîne de bits d'ID de construction identifiant l'original
le fichier lié ne change pas.

Passer "aucun" pour style désactive le paramètre de toutes les options "--build-id" plus tôt
la ligne de commande.

L'éditeur de liens i386 PE prend en charge le -partagé option, ce qui fait que la sortie est un
bibliothèque liée dynamiquement (DLL) au lieu d'un exécutable normal. Vous devez nommer le
afficher "*.dll" lorsque vous utilisez cette option. De plus, l'éditeur de liens prend entièrement en charge le
fichiers standard "*.def", qui peuvent être spécifiés sur la ligne de commande de l'éditeur de liens comme un objet
(en fait, il devrait précéder les archives à partir desquelles il exporte les symboles, pour s'assurer qu'ils obtiennent
lié, tout comme un fichier objet normal).

En plus des options communes à toutes les cibles, l'éditeur de liens PE i386 prend en charge des
les options de ligne de commande spécifiques à la cible i386 PE. Des options qui prennent des valeurs
peuvent être séparés de leurs valeurs par un espace ou un signe égal.

--add-stdcall-alias
Si donné, symboles avec un suffixe stdcall (@nn) sera exporté tel quel et également avec le
suffixe supprimé. [Cette option est spécifique au port ciblé i386 PE de l'éditeur de liens]

--base-fichier filet
Utiliser filet comme nom d'un fichier dans lequel enregistrer les adresses de base de tous les
relocalisations nécessaires pour générer des DLL avec dlltool. [Il s'agit d'un i386 PE spécifique
option]

--dll
Créez une DLL au lieu d'un exécutable standard. Vous pouvez également utiliser -partagé ou spécifiez un
"LIBRARY" dans un fichier ".def" donné. [Cette option est spécifique au i386 PE ciblé
port de l'éditeur de liens]

--enable-long-section-names
--disable-long-section-names
Les variantes PE du format d'objet COFF ajoutent une extension qui permet l'utilisation de
les noms de section de plus de huit caractères, la limite normale pour COFF. Par défaut,
ces noms ne sont autorisés que dans les fichiers objets, car les images exécutables entièrement liées ne
portent la table de chaînes COFF requise pour prendre en charge les noms plus longs. En tant qu'extension GNU,
il est également possible d'autoriser leur utilisation dans des images exécutables, ou (probablement
inutilement !) l'interdisent dans les fichiers objets, en utilisant ces deux options. Exécutable
les images générées avec ces longs noms de section sont légèrement non standard, portant comme
ils font une table de chaînes et peuvent générer une sortie déroutante lorsqu'ils sont examinés avec non-GNU
Outils compatibles PE, tels que les visionneuses de fichiers et les dumpers. Cependant, GDB repose sur l'utilisation de
PE longs noms de section pour trouver les sections d'informations de débogage Dwarf-2 dans un exécutable
image au moment de l'exécution, et donc si aucune option n'est spécifiée sur la ligne de commande, ld seront
activer les noms de section longs, en remplaçant le comportement par défaut et techniquement correct,
lorsqu'il détecte la présence d'informations de débogage en liant une image exécutable et
ne pas supprimer les symboles. [Cette option est valable pour tous les ports PE ciblés de l'éditeur de liens]

--enable-stdcall-fixup
--disable-stdcall-fixup
Si le lien trouve un symbole qu'il ne peut pas résoudre, il tentera d'effectuer
reliant" en recherchant un autre symbole défini qui ne diffère que par le format du
nom du symbole (cdecl vs stdcall) et résoudra ce symbole en se liant à la correspondance.
Par exemple, le symbole non défini "_foo" peut être lié à la fonction "_foo@12", ou
le symbole non défini "_bar@16" peut être lié à la fonction "_bar". Quand le
l'éditeur de liens fait cela, il affiche un avertissement, car il aurait normalement dû échouer à se lier,
mais parfois les bibliothèques d'importation générées à partir de DLL tierces peuvent avoir besoin de cette fonctionnalité
être utilisable. Si vous spécifiez --enable-stdcall-fixup, cette fonctionnalité est entièrement activée
et les avertissements ne sont pas imprimés. Si vous spécifiez --disable-stdcall-fixup, cette fonctionnalité est
désactivé et de telles discordances sont considérées comme des erreurs. [Cette option est spécifique à
le port ciblé i386 PE de l'éditeur de liens]

--leader-underscore
--no-leader-underscore
Pour la plupart des cibles, le préfixe de symbole par défaut est un trait de soulignement et est défini dans le
la description. Par cette option, il est possible de désactiver/activer le trait de soulignement par défaut
symbole-préfixe.

--export-all-symbols
Si donné, tous les symboles globaux dans les objets utilisés pour construire une DLL seront exportés par
la DLL. Notez qu'il s'agit de la valeur par défaut s'il n'y aurait pas d'exportation
symboles. Lorsque les symboles sont explicitement exportés via des fichiers DEF ou implicitement exportés
via les attributs de fonction, la valeur par défaut est de ne rien exporter d'autre à moins que cette option
est donné. Notez que les symboles "DllMain@12", "DllEntryPoint@0",
"DllMainCRTStartup@12" et "impure_ptr" ne seront pas automatiquement exportés. Aussi,
les symboles importés d'autres DLL ne seront pas réexportés, pas plus que les symboles spécifiant
la disposition interne de la DLL telle que celles commençant par "_head_" ou se terminant par
"_mon nom". De plus, aucun symbole de "libgcc", "libstd++", "libmingw32", ou
"crtX.o" sera exporté. Symboles dont les noms commencent par "__rtti_" ou "__builtin_"
ne sera pas exporté, pour aider avec les DLL C++. Enfin, il existe une longue liste de
symboles cygwin-private qui ne sont pas exportés (évidemment, cela s'applique lors de la construction
DLL pour les cibles cygwin). Ces exclusions cygwin sont : "_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" et "environ". [Cette option est spécifique au i386 PE ciblé
port de l'éditeur de liens]

--exclude-symboles symbole,symbole...
Spécifie une liste de symboles qui ne doivent pas être automatiquement exportés. Le symbole
les noms peuvent être délimités par des virgules ou des deux-points. [Cette option est spécifique au i386 PE
port ciblé de l'éditeur de liens]

--exclude-all-symbols
Spécifie qu'aucun symbole ne doit être exporté automatiquement. [Cette option est spécifique à
le port ciblé i386 PE de l'éditeur de liens]

--file-alignement
Spécifiez l'alignement du fichier. Les sections du fichier commenceront toujours aux décalages du fichier
qui sont des multiples de ce nombre. La valeur par défaut est 512. [Cette option est spécifique
au port ciblé i386 PE de l'éditeur de liens]

--tas réserve
--tas réserve,commettre
Spécifiez le nombre d'octets de mémoire à réserver (et éventuellement valider) à utiliser comme
tas pour ce programme. La valeur par défaut est 1 Mo réservé, 4K engagé. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--image-base VALORISONS
Utiliser VALORISONS comme adresse de base de votre programme ou dll. C'est la mémoire la plus basse
emplacement qui sera utilisé lors du chargement de votre programme ou dll. Pour réduire le besoin de
déplacer et améliorer les performances de vos dll, chacune doit avoir une adresse de base unique
et ne pas chevaucher d'autres DLL. La valeur par défaut est 0x400000 pour les exécutables, et
0x10000000 pour les dll. [Cette option est spécifique au port ciblé i386 PE du
éditeur de liens]

--kill-at
S'ils sont fournis, les suffixes stdcall (@nn) seront supprimés des symboles avant qu'ils ne soient
exporté. [Cette option est spécifique au port ciblé i386 PE de l'éditeur de liens]

--conscient des grandes adresses
S'il est donné, le bit approprié dans le champ "Caractéristiques" de l'en-tête COFF est défini
pour indiquer que cet exécutable prend en charge les adresses virtuelles supérieures à 2 gigaoctets.
Cela doit être utilisé en conjonction avec le /3GB ou /USERVA=VALORISONS les mégaoctets passent
la section "[systèmes d'exploitation]" du BOOT.INI. Sinon, ce bit n'a aucun effet.
[Cette option est spécifique aux ports ciblés PE ​​de l'éditeur de liens]

--disable-large-address-aware
Rétablit l'effet d'un précédent --conscient des grandes adresses option. Ceci est utile si
--conscient des grandes adresses est toujours défini par le pilote du compilateur (par exemple Cygwin gcc) et le
l'exécutable ne prend pas en charge les adresses virtuelles supérieures à 2 gigaoctets. [Cette option
est spécifique aux ports ciblés PE ​​de l'éditeur de liens]

--major-image-version VALORISONS
Définit le numéro majeur de la "version de l'image". La valeur par défaut est 1. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--version majeure du système d'exploitation VALORISONS
Définit le numéro majeur de la "version du système d'exploitation". La valeur par défaut est 4. [Cette option est spécifique
au port ciblé i386 PE de l'éditeur de liens]

--major-subsystem-version VALORISONS
Définit le numéro majeur de la "version du sous-système". La valeur par défaut est 4. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--version-image-mineur VALORISONS
Définit le numéro mineur de la "version de l'image". La valeur par défaut est 0. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--version mineure du système d'exploitation VALORISONS
Définit le numéro mineur de la "version du système d'exploitation". La valeur par défaut est 0. [Cette option est spécifique
au port ciblé i386 PE de l'éditeur de liens]

--minor-subsystem-version VALORISONS
Définit le numéro mineur de la "version du sous-système". La valeur par défaut est 0. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--output-def filet
L'éditeur de liens créera le fichier filet qui contiendra un fichier DEF correspondant à
la DLL générée par l'éditeur de liens. Ce fichier DEF (qui devrait s'appeler "*.def") peut
être utilisé pour créer une bibliothèque d'importation avec "dlltool" ou peut être utilisé comme référence à
symboles exportés automatiquement ou implicitement. [Cette option est spécifique au i386 PE
port ciblé de l'éditeur de liens]

--out-implib filet
L'éditeur de liens créera le fichier filet qui contiendra une lib d'import correspondant à
la DLL générée par l'éditeur de liens. Cette lib d'import (qui devrait s'appeler "*.dll.a" ou
"*.a" peut être utilisé pour lier les clients à la DLL générée ; ce comportement rend
possible d'ignorer une étape de création de bibliothèque d'importation "dlltool" distincte. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--enable-auto-image-base
--enable-auto-image-base=VALORISONS
Choisissez automatiquement la base de l'image pour les DLL, en commençant éventuellement par la base VALORISONS,
à moins que l'on ne soit spécifié à l'aide de l'argument "--image-base". En utilisant un hachage généré
à partir du nom de la dll pour créer des bases d'images uniques pour chaque DLL, les collisions en mémoire et
les délocalisations qui peuvent retarder l'exécution du programme sont évitées. [Cette option est spécifique
au port ciblé i386 PE de l'éditeur de liens]

--disable-auto-image-base
Ne générez pas automatiquement une base d'images unique. S'il n'y a pas d'utilisateur spécifié
image base ("--image-base") puis utilisez la valeur par défaut de la plate-forme. [Cette option est spécifique
au port ciblé i386 PE de l'éditeur de liens]

--dll-search-prefix un magnifique
Lors de la liaison dynamique à une dll sans bibliothèque d'importation, recherchez
" .dll" de préférence à "lib .dll". Ce comportement permet
distinction facile entre les DLL construites pour les différentes "sous-plateformes": native, cygwin,
uwin, pw, etc. Par exemple, les DLL cygwin utilisent généralement "--dll-search-prefix=cyg".
[Cette option est spécifique au port ciblé i386 PE de l'éditeur de liens]

--enable-auto-importation
Faire un lien sophistiqué de "_symbol" à "__imp__symbol" pour les importations de DONNÉES à partir de DLL,
et créez les symboles de thunking nécessaires lors de la construction des bibliothèques d'importation avec
ces exportations de données. Remarque : L'utilisation de l'extension 'auto-import' entraînera le texte
section du fichier image à rendre accessible en écriture. Ceci n'est pas conforme au PE-COFF
spécification de format publiée par Microsoft.

Remarque - l'utilisation de l'extension 'auto-import' entraînera également des données en lecture seule qui
normalement être placé dans la section .rdata pour être placé dans la section .data
au lieu. Ceci afin de contourner un problème avec consts qui est décrit
ici: http://www.cygwin.com/ml/cygwin/2004-09/msg01101.html

L'utilisation de "l'importation automatique" fonctionnera généralement "tout simplement" - mais parfois vous pouvez voir ceci
message:

"La variable ' ' ne peut pas être importée automatiquement. Veuillez lire la documentation de ld
"--enable-auto-import" pour plus de détails."

Ce message se produit lorsqu'une (sous-)expression accède à une adresse finalement donnée par
la somme de deux constantes (les tables d'import Win32 n'en autorisent qu'une). Les cas où cela
peuvent se produire incluent des accès aux champs membres des variables de structure importées d'une DLL,
ainsi que l'utilisation d'un index constant dans une variable de tableau importée d'une DLL. Tout
Les variables multimots (tableaux, structs, long long, etc.) peuvent déclencher cette condition d'erreur.
Cependant, quel que soit le type de données exact de la variable exportée incriminée, ld
toujours le détecter, émettre l'avertissement et quitter.

Il existe plusieurs façons de résoudre cette difficulté, quel que soit le type de données du
variable exportée :

Une façon consiste à utiliser le commutateur --enable-runtime-pseudo-reloc. Cela laisse la tâche de
ajuster les références dans votre code client pour l'environnement d'exécution, donc cette méthode fonctionne
uniquement lorsque l'environnement d'exécution prend en charge cette fonctionnalité.

Une deuxième solution consiste à forcer l'une des « constantes » à être une variable, c'est-à-dire
inconnu et non optimisable au moment de la compilation. Pour les tableaux, il y a deux possibilités :
a) faire de l'indexé (l'adresse du tableau) une variable, ou b) faire de l'index « constant »
une variable. Ainsi:

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

or

type externe tableau_externe[] ;
tableau_externe[1] -->
{ int volatile t=1; tableau_externe[t] }

Pour les structs (et la plupart des autres types de données multimots), la seule option est de faire le
struct lui-même (ou le long long, ou la ...) variable :

structure externe s structure_externe;
extern_struct.field -->
{ struct volatile s *t=&extern_struct; t->champ }

or

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

Une troisième méthode pour surmonter cette difficulté consiste à abandonner l'« importation automatique » pour le
symbole incriminé et marquez-le avec "__declspec(dllimport)". Cependant, en pratique que
nécessite l'utilisation de #defines au moment de la compilation pour indiquer si vous construisez une DLL,
construire un code client qui sera lié à la DLL, ou simplement créer/lier à un fichier statique
une bibliothèque. En faisant le choix entre les différentes méthodes de résolution du « direct
adresse avec un problème de décalage constant, vous devriez considérer l'utilisation typique du monde réel :

Original:

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

Solution 1:

--foo.h
extern int arr[] ;
--foo.c
#include "foo.h"
void main(int argc, char **argv){
/* Cette solution de contournement concerne win32 et cygwin ; ne pas "optimiser" */
volatil entier *parr = arr;
printf("%d\n",parr[1]);
}

Solution 2:

--foo.h
/* Remarque : l'auto-export est supposé (pas de __declspec(dllexport)) */
#if (défini(_WIN32) || défini(__CYGWIN__)) && \
!(défini(FOO_BUILD_DLL) || défini(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]);
}

Une quatrième façon d'éviter ce problème est de recoder votre bibliothèque pour utiliser un
plutôt qu'une interface de données pour les variables incriminées (par exemple set_foo() et
get_foo() fonctions d'accesseur). [Cette option est spécifique au port ciblé i386 PE
de l'éditeur de liens]

--disable-auto-importation
N'essayez pas de faire un lien sophistiqué de "_symbol" à "__imp__symbol" pour DATA
les importations à partir de DLL. [Cette option est spécifique au port ciblé i386 PE du
éditeur de liens]

--enable-runtime-pseudo-reloc
Si votre code contient des expressions décrites dans la section --enable-auto-import, c'est-à-dire
DATA importe de la DLL avec un décalage non nul, ce commutateur créera un vecteur de
'pseudo relocalisations d'exécution' qui peuvent être utilisées par l'environnement d'exécution pour ajuster
références à ces données dans votre code client. [Cette option est spécifique au i386 PE
port ciblé de l'éditeur de liens]

--disable-runtime-pseudo-reloc
Ne créez pas de pseudo-relocalisations pour les importations de données avec un décalage différent de zéro à partir de DLL. [Cette
l'option est spécifique au port ciblé i386 PE de l'éditeur de liens]

--enable-extra-pe-débogage
Afficher des informations de débogage supplémentaires liées au thunking de symbole d'importation automatique. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--section-alignement
Définit l'alignement de la section. Les sections en mémoire commenceront toujours aux adresses qui
sont un multiple de ce nombre. La valeur par défaut est 0x1000. [Cette option est spécifique au
port ciblé i386 PE de l'éditeur de liens]

--empiler réserve
--empiler réserve,commettre
Spécifiez le nombre d'octets de mémoire à réserver (et éventuellement valider) à utiliser comme
pile pour ce programme. La valeur par défaut est 2 Mo réservés, 4K engagés. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--sous-système qui
--sous-système qui:majeur
--sous-système qui:majeur.mineur
Spécifie le sous-système sous lequel votre programme s'exécutera. Les valeurs légales de
qui sont "native", "windows", "console", "posix" et "xbox". Vous pouvez éventuellement définir
la version du sous-système également. Les valeurs numériques sont également acceptées pour qui. [Cette option
est spécifique au port ciblé i386 PE de l'éditeur de liens]

Les options suivantes définissent des indicateurs dans le champ "DllCharacteristics" du fichier PE
header : [Ces options sont spécifiques aux ports PE ciblés de l'éditeur de liens]

--haute-entropie-va
L'image est compatible avec la randomisation de la disposition de l'espace d'adressage (ASLR) 64 bits.

--basedynamique
L'adresse de base de l'image peut être déplacée à l'aide de la randomisation de la disposition de l'espace d'adressage
(ASLR). Cette fonctionnalité a été introduite avec MS Windows Vista pour les cibles i386 PE.

--forceinteg
Les contrôles d'intégrité du code sont appliqués.

--nxcompat
L'image est compatible avec la prévention de l'exécution des données. Cette fonctionnalité était
introduit avec MS Windows XP SP2 pour les cibles i386 PE.

--pas d'isolement
Bien que l'image comprenne l'isolement, n'isolez pas l'image.

--non-seh
L'image n'utilise pas SEH. Aucun gestionnaire SE ne peut être appelé à partir de cette image.

--no-bind
Ne liez pas cette image.

--wdmdriver
Le pilote utilise le modèle de pilote MS Windows.

--tsaware
L'image est compatible avec Terminal Server.

--insérer-horodatage
--no-insert-horodatage
Insérez un horodatage réel dans l'image. C'est le comportement par défaut car il correspond
code hérité et cela signifie que l'image fonctionnera avec d'autres outils propriétaires. Les
Le problème avec cette valeur par défaut est qu'il en résultera des images légèrement différentes
produit à chaque fois que les mêmes sources sont liées. L'option --no-insert-horodatage peut
être utilisé pour insérer une valeur zéro pour l'horodatage, ce qui garantit que les binaires produits
provenant de sources identiques se compareront de manière identique.

La cible C6X uClinux utilise un format binaire appelé DSBT pour prendre en charge les bibliothèques partagées. Chaque
la bibliothèque partagée dans le système doit avoir un index unique ; tous les exécutables utilisent un index de
0.

--dsbt-taille taille
Cette option définit le nombre d'entrées dans le DSBT de l'exécutable courant ou partagé
bibliothèque à taille. La valeur par défaut est de créer une table avec 64 entrées.

--dsbt-index indice
Cette option définit l'index DSBT de l'exécutable actuel ou de la bibliothèque partagée sur indice.
La valeur par défaut est 0, ce qui est approprié pour générer des exécutables. Si un partage
la bibliothèque est générée avec un index DSBT de 0, les relocs "R_C6000_DSBT_INDEX" sont
copié dans le fichier de sortie.

La --no-merge-exidx-entries le commutateur désactive la fusion des entrées exidx adjacentes dans
informations de déroulement du cadre.

Les linkers 68HC11 et 68HC12 prennent en charge des options spécifiques pour contrôler la banque de mémoire
cartographie de commutation et génération de code de trampoline.

--pas de trampoline
Cette option désactive la génération de trampoline. Par défaut, un trampoline est
généré pour chaque fonction far qui est appelée à l'aide d'une instruction "jsr" (cette
se produit lorsqu'un pointeur vers une fonction far est pris).

--banque-fenêtre prénom
Cette option indique à l'éditeur de liens le nom de la région mémoire dans le MÉMOIRE
spécification qui décrit la fenêtre de banque de mémoire. La définition d'une telle région est
ensuite utilisé par l'éditeur de liens pour calculer la pagination et les adresses dans la fenêtre de mémoire.

Les options suivantes sont prises en charge pour contrôler la gestion de la génération GOT lors de la liaison pour
68K cibles.

--got=type
Cette option indique à l'éditeur de liens quel schéma de génération GOT utiliser. type devrait être un
of unique, négatif, multigot or cible. Pour plus d'informations, reportez-vous à l'entrée Info
pour la qualité ld.

Les options suivantes sont prises en charge pour contrôler la génération d'instructions microMIPS lorsque
liaison pour les cibles MIPS.

--insn32
--no-insn32
Ces options contrôlent le choix des instructions microMIPS utilisées dans le code généré par
le lieur, tel que celui dans le PLT ou les talons de liaison paresseux, ou en relaxation. Si
--insn32 est utilisé, alors l'éditeur de liens n'utilise que des codages d'instructions sur 32 bits. Par défaut
ou si --no-insn32 est utilisé, tous les codages d'instructions sont utilisés, y compris ceux de 16 bits
lorsque c'est possible.

ENVIRONNEMENT


Vous pouvez modifier le comportement de ld avec les variables d'environnement "GNUTARGET",
"LDEMULATION" et "COLLECT_NO_DEMANGLE".

"GNUTARGET" détermine le format de l'objet du fichier d'entrée si vous n'utilisez pas -b (ou son synonyme
--format). Sa valeur doit être l'un des noms BFD pour un format d'entrée. Si il n'y a pas
"GNUTARGET" dans l'environnement, ld utilise le format naturel de la cible. Si "GNUTARGET"
est défini sur « par défaut », alors BFD tente de découvrir le format d'entrée en examinant le binaire
fichiers d'entrée ; cette méthode réussit souvent, mais il y a des ambiguïtés potentielles, car il
n'est pas une méthode pour s'assurer que le nombre magique utilisé pour spécifier les formats de fichier objet est
unique. Cependant, la procédure de configuration de BFD sur chaque système place le
format conventionnel pour ce système en premier dans la liste de recherche, donc les ambiguïtés sont résolues
en faveur de la convention.

"LDEMULATION" détermine l'émulation par défaut si vous n'utilisez pas le -m option. La
l'émulation peut affecter divers aspects du comportement de l'éditeur de liens, en particulier l'éditeur de liens par défaut
scénario. Vous pouvez lister les émulations disponibles avec le --verbeux or -V option. Si la
-m n'est pas utilisée et que la variable d'environnement "LDEMULATION" n'est pas définie, la
l'émulation par défaut dépend de la façon dont l'éditeur de liens a été configuré.

Normalement, l'éditeur de liens va par défaut démanteler les symboles. Toutefois, si
"COLLECT_NO_DEMANGLE" est défini dans l'environnement, il sera alors par défaut de ne pas démanteler
symboles. Cette variable d'environnement est utilisée de manière similaire par l'éditeur de liens "gcc"
programme d'emballage. La valeur par défaut peut être remplacée par le --démêler et --no-demangle
options.

Utilisez mips64-linux-gnuabi64-ld.bfd en ligne en utilisant les services onworks.net


Ad


Ad

Derniers programmes en ligne Linux et Windows