AnglaisFrançaisEspagnol

Ad


Icône de favori OnWorks

i686-linux-gnu-ld - En ligne dans le cloud

Exécutez i686-linux-gnu-ld 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 i686-linux-gnu-ld 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:

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 lie les références de symboles. Habituellement, la dernière étape de la compilation d'un
le programme doit s'exécuter ld.

ld accepte les fichiers Linker Command Language écrits dans un sur-ensemble de
La syntaxe du langage de commande de l'éditeur de liens d'AT&T, pour fournir des
contrôle 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 plus de 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 fonctionner sur
fichiers objets. Ceci permet ld pour lire, combiner et écrire des fichiers objets
dans de nombreux formats différents --- par exemple, COFF ou "a.out". Différent
les formats peuvent être liés entre eux pour produire tout type d'objet disponible
fichier.

Mis à part sa flexibilité, l'éditeur de liens GNU est plus utile que d'autres
linkers en fournissant des informations de diagnostic. De nombreux linkers abandonnent
exécution immédiatement en cas d'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
beaucoup de choix pour contrôler son comportement.

OPTIONS


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

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

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

Certaines des options de ligne de commande pour ld peut être spécifié à tout moment dans
la ligne de commande. Cependant, les options qui font référence à des fichiers, telles que -l or
-T, provoque la lecture du fichier à l'endroit où l'option apparaît
dans la ligne de commande, par rapport aux fichiers objet et autre fichier
option. La répétition d'options non-fichier avec un argument différent
soit n'ont plus d'effet, soit annulent les occurrences précédentes (ceux
plus à gauche sur la ligne de commande) de cette option. Des options qui
peuvent être spécifiés de manière significative plus d'une fois sont notés dans le
descriptifs ci-dessous.

Les arguments non optionnels sont des fichiers objets ou des archives qui doivent être
reliés entre eux. Ils peuvent suivre, précéder ou être mélangés à
options de ligne de commande, sauf qu'un argument de fichier objet peut ne 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
peut spécifier d'autres formes de fichiers d'entrée binaires en utilisant -l, -Rainsi que,
langage de commande de script. Si aucune les fichiers d'entrée binaires sont tous
spécifié, 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
supposez qu'il s'agit d'un script d'é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 par défaut
script de l'éditeur de liens ou celui spécifié en utilisant -T). Cette fonctionnalité permet
l'éditeur de liens pour é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écification d'un script dans ce
manière augmente simplement le script principal de l'éditeur de liens, avec les commandes supplémentaires
placé après le script principal ; Utilisez le -T option pour remplacer la valeur par défaut
entièrement le script de l'éditeur de liens, mais notez l'effet de la commande "INSERT".

Pour les options dont les noms sont constitués d'une seule lettre, les arguments d'option doivent
soit suivre la lettre d'option sans intervenir d'espace, soit être
donné comme arguments séparés immédiatement après l'option qui
les exige.

Pour les options dont le nom est composé de plusieurs lettres, un tiret ou deux
peut précéder le nom de l'option ; par example, -trace-symbole ainsi que le
--trace-symbole sont équivalents. Remarque --- il y a une exception à cela
régner. Plusieurs options de lettres commençant par un « o » minuscule peuvent
n'être précédé que de deux tirets. Ceci afin de réduire la confusion avec le
-o option. Alors par exemple -magique définit le nom du fichier de sortie sur la magie
Les --magique définit l'indicateur NMAGIC sur la sortie.

Les arguments des options à plusieurs lettres doivent être séparés de la
nom de l'option par un signe égal, ou être donné comme arguments séparés
immédiatement après l'option qui les requiert. Par example,
--trace-symbole foo ainsi que le --trace-symbol=foo sont équivalents. Unique
les abréviations 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) alors toutes les options de ligne de commande de l'éditeur de liens doivent être préfixées
by -Wl, (ou tout ce qui est approprié pour le pilote de compilateur particulier)
comme ça:

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

Ceci est important, car sinon le programme pilote du compilateur pourrait
supprimez silencieusement les options de l'éditeur de liens, ce qui entraîne un mauvais lien. Confusion
peut également survenir lors du passage d'options qui nécessitent des valeurs via un
pilote, car 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 l'argument au compilateur. Dans ce cas, il est plus simple d'utiliser
les formes jointes des 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 le
Éditeur de liens GNU :

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

options dans filet sont séparés par des espaces. Un espace
caractère peut être inclus dans une option en entourant l'ensemble
option entre guillemets simples ou doubles. Tout caractère (y compris
une barre oblique inverse) peut être inclus en préfixant le caractère à
inclus avec une barre oblique inverse. Les filet peut lui-même contenir d'autres
@filet options; 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'une des chaînes archives, communou défaut.
-unearchive est fonctionnellement équivalent à -Bstatique, et les deux autres
les mots-clés sont fonctionnellement équivalents à -Bdynamique. Cette option peut
être utilisé un certain nombre de fois.

--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
utiliser. Si l'éditeur de liens trouve un objet avec une entrée d'audit alors
recherche de bibliothèques partagées, il ajoutera un correspondant
Entrée "DT_DEPAUDIT" dans le fichier de sortie. Cette option est uniquement
significatif 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 le
Famille d'architectures Intel 960. Dans ce ld configuration, le
architecture L'argument identifie l'architecture particulière dans le
960 famille, permettant certaines sauvegardes et modifiant l'archive-
chemin de recherche de la bibliothèque.

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

-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 est configuré de cette façon, vous pouvez utiliser le -b Option de
spécifier le format binaire pour les fichiers d'objet d'entrée qui suivent
option sur la ligne de commande. Même quand ld est configuré pour prendre en charge
formats d'objet alternatifs, vous n'avez généralement pas besoin de le spécifier,
as 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 supporté 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
format binaire inhabituel. Vous pouvez aussi utiliser -b changer de format
explicitement (lors de la liaison de fichiers objets de formats différents), en
comme -b format d'entrée avant chaque groupe de fichiers objet 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, en utilisant le
commande "CIBLE" ;

-c Fichier de commandes IRM
--mri-script=Fichier de commandes IRM
Pour la compatibilité avec les linkers produits par IRM, ld accepte le script
des fichiers écrits dans un autre langage de commande restreint,
décrit dans la section MRI Compatible Script Files de GNU ld
Documentation. 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 langage de script. Si IRM-cmdfile n'existe pas, ld cherche des
dans les répertoires spécifiés par tout -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 communs
symboles même si un fichier de sortie transférable est spécifié (avec -r).
La commande de script "FORCE_COMMON_ALLOCATION" a le même effet.

--dépaudit 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 plateformes ELF
prenant en charge l'interface rtld-audit. L'option -P est fournie pour
Compatibilité Solaris.

-e entrée
--entrée=entrée
Utilisez entrée comme symbole explicite pour commencer l'exécution de votre
programme, plutôt que le point d'entrée par défaut. Si il n'y a pas
symbole nommé entrée, l'éditeur de liens essaiera d'analyser entrée comme un nombre,
et utilisez-la 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
virgules ou deux points. Spécifier "--exclude-libs ALL" exclut les symboles
dans toutes les bibliothèques d'archives à partir de l'exportation automatique. Cette option est
disponible uniquement pour le port ciblé i386 PE de l'éditeur de liens et pour
Ports ciblés ELF. Pour i386 PE, les symboles explicitement répertoriés dans un
.def sont toujours exportés, quelle que soit cette option. Pour ELF
ports ciblés, les symboles affectés par cette option seront traités comme
caché.

--exclure-modules-pour-implib module,module...
Spécifie une liste de fichiers objets ou de membres d'archive, à partir desquels
les symboles ne doivent pas être exportés automatiquement, mais qui doivent être
copié en gros dans la bibliothèque d'import en cours de génération
lien. Les noms de module peuvent être délimités par des virgules ou des deux-points, et
doit correspondre exactement aux noms de fichiers utilisés par ld ouvrir les fichiers ; pour
membres de l'archive, il s'agit simplement du nom du membre, mais pour l'objet
fichiers dont le nom répertorié doit inclure et correspondre précisément à n'importe quel chemin
utilisé pour spécifier le fichier d'entrée sur la ligne de commande de l'éditeur de liens. Cette
L'option n'est disponible que pour le port ciblé i386 PE du
éditeur de liens. Les symboles explicitement répertoriés dans un fichier .def sont toujours
exporté, quelle que soit 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
au sein de l’ --export-dynamique l'option oblige l'éditeur de liens à ajouter tous les symboles
à la table des symboles dynamique. La table des symboles dynamique est l'ensemble
de symboles qui sont visibles à partir d'objets dynamiques au moment de l'exécution.

Si vous n'utilisez aucune de ces options (ou utilisez le
--no-export-dynamique option pour restaurer le comportement par défaut), le
table de symboles dynamique ne contiendra normalement que les 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
revenir aux symboles définis par le programme, plutôt qu'à d'autres
objet dynamique, vous devrez probablement utiliser cette option lorsque
reliant le programme lui-même.

Vous pouvez également utiliser la liste dynamique pour contrôler quels symboles doivent être
ajouté à la table des symboles dynamiques 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. PE
les cibles prennent en charge une fonction similaire pour exporter tous les symboles d'une DLL
ou EXE ; voir la description de --export-tous les symboles ci-dessous.

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

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

-f prénom
--auxiliaire=prénom
Lors de la création d'un objet partagé ELF, définissez le DT_AUXILIARY interne
champ au nom spécifié. Cela indique à l'éditeur de liens dynamique que
la table des symboles de l'objet partagé doit être utilisée 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 DT_AUXILIARY
domaine. Si l'éditeur de liens dynamique résout tous les symboles du filtre
objet, il vérifiera d'abord s'il existe une définition dans le
objet partagé prénom. S'il y en a un, il sera utilisé à la place de
la définition dans l'objet filtre. L'objet partagé prénom need
n'existe pas. Ainsi l'objet partagé prénom peut être utilisé pour fournir un
mise en œuvre alternative de certaines fonctions, peut-être pour
débogage ou pour des performances spécifiques à la machine.

Cette option peut être spécifiée plusieurs fois. Le DT_AUXILIAIRE
les entrées seront créées dans l'ordre dans lequel elles apparaissent sur le
ligne de commande.

-F prénom
--filtre=prénom
Lors de la création d'un objet partagé ELF, définissez le DT_FILTER interne
champ au nom spécifié. Cela indique à l'éditeur de liens dynamique que
la table des mnémoniques de l'objet partagé 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 DT_FILTER
domaine. L'éditeur de liens dynamique résoudra les symboles selon le
table des symboles de l'objet filtre comme d'habitude, mais il sera en fait
lien vers les définitions présentes dans l'objet partagé prénom. Ainsi, le
l'objet filtre peut être utilisé pour sélectionner un sous-ensemble des symboles
fourni par l'objet prénom.

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

-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 défaut, l'éditeur de liens utilise "_fini"
comme fonction à appeler.

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

-G Plus-value
--gpsize=Plus-value
Définir la taille maximale des objets à optimiser à l'aide du GP
inscrivez-vous à Taille. Ceci n'a de sens que pour les formats de fichier objet
tels que MIPS ELF qui prennent en charge la mise en place d'objets petits et grands
différentes rubriques. Ceci est ignoré pour les autres formats de fichier objet.

-h prénom
-sonnom=prénom
Lors de la création d'un objet partagé ELF, définissez le DT_SONAME interne
champ au nom spécifié. Lorsqu'un exécutable est lié à un
objet partagé qui a un champ DT_SONAME, puis lorsque l'exécutable
est exécuté, l'éditeur de liens dynamique tentera de charger l'objet partagé
spécifié par le champ DT_SONAME plutôt que par l'utilisation du fichier
nom 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 mettant DT_INIT sur
l'adresse de la fonction. 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 de
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 le chemin de la bibliothèque
pour un fichier appelé nom de fichier, sinon il recherchera la bibliothèque
chemin d'accès à un fichier appelé libnamespec.a.

Sur les systèmes qui prennent en charge les bibliothèques partagées, ld peut également rechercher
fichiers autres que libnamespec.a. Plus précisément, sur ELF et SunOS
Systèmes, 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.) Remarque
que ce comportement ne s'applique pas à :nom de fichier, qui toujours
spécifie 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 apparaissait avant le
archive sur la ligne de commande, l'éditeur de liens inclura le
fichier(s) approprié(s) de l'archive. Cependant, un symbole indéfini
dans un objet apparaissant plus tard sur la ligne de commande ne provoquera pas le
l'éditeur de liens pour rechercher à nouveau l'archive.

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

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 utilisez ld sur AIX, notez qu'il est différent de
le comportement de l'éditeur de liens AIX.

-L répertoire de recherche
--chemin-bibliothèque=répertoire de recherche
Ajouter un chemin répertoire de recherche à la liste des chemins qui ld va chercher
bibliothèques d'archives et ld scripts de contrôle. Vous pouvez utiliser cette option
n'importe quel nombre de fois. Les répertoires sont recherchés dans l'ordre dans
lesquels ils sont spécifiés sur la ligne de commande. Annuaires
spécifié sur la ligne de commande sont recherchés avant la valeur par défaut
répertoires. Tout -L les options s'appliquent à tous -l options, indépendamment de
l'ordre dans lequel les options apparaissent. -L les options n'affectent pas
how ld recherche un script d'éditeur de liens à moins que -T est spécifiée.

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 du mode d'émulation ld utilise, et dans certains cas aussi
sur la façon dont il a été configuré.

Les chemins peuvent également être spécifiés dans un script de lien avec le
Commande "REP_RECHERCHE". 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 commande
ligne.

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

Si la -m n'est pas utilisée, l'émulation est extraite du
Variable d'environnement "LDEMULATION", 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
informations sur le lien, y compris les suivantes :

· 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 a provoqué l'introduction du membre de l'archive.

· Les valeurs affectées aux symboles.

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

See Expressions pour plus d'informations sur les expressions dans
scripts de liaison.

-n
--nmagique
Désactivez l'alignement des pages des sections et désactivez la liaison avec
bibliothèques partagées. Si le format de sortie prend en charge la magie de style Unix
numéros, 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,
n'alignez pas la page sur le segment de données et désactivez la liaison avec
bibliothèques partagées. Si le format de sortie prend en charge la magie de style Unix
numéros, marquez la sortie comme "OMAGIC". Remarque : bien qu'il soit accessible en écriture
la section de texte 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 fixe
la section de texte en lecture seule et force le segment de données à être
aligné sur la page. Remarque - cette option n'active pas la liaison avec
bibliothèques partagées. Utiliser -Bdynamique pour ça.

-o sortie
--sortie=sortie
Utilisez sortie comme nom du programme produit par ld; si ce
l'option n'est pas spécifiée, le nom a.out est utilisé par défaut. le
La commande de script "OUTPUT" peut également spécifier le nom du fichier de sortie.

-O niveau
If niveau est une valeur numérique supérieure à zéro ld optimise le
sortir. Cela peut prendre beaucoup plus de temps et donc
ne devrait probablement être activé que pour le binaire final. Au
Pour le moment, cette option n'affecte que la génération de la bibliothèque partagée ELF.
Les futures versions de l'éditeur de liens pourraient utiliser davantage cette option.
De plus, il n'y a actuellement aucune 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 prochaines versions.

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

Les options couvertes sont : -Bdynamique, -Bstatique, -dn, -dy,
-appel_partagé, -non_partagé, -statique, -N, -n, --archive-entière,
--pas d'archive entière, -r, -Ur, --copy-dt-entrées-nécessaires,
--no-copy-dt-need-entries, --comme requis, --no-as-besoinet la -a.

Une cible pour cette option sont les spécifications pour pkg-config. Quand
utilisé avec le --libs option toutes les bibliothèques éventuellement nécessaires sont
répertorié et éventuellement lié à tout le temps. Il vaut mieux
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 de
les drapeaux régissant la gestion des fichiers d'entrée.

-q
--emit-relocalisations
Laissez les sections et le contenu de relocalisation dans des exécutables entièrement liés.
Les outils d'analyse et d'optimisation des liens postaux peuvent avoir besoin de ces informations
afin d'effectuer les modifications correctes des exécutables. Cette
génère 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écifiques aux cibles VxWorks.

-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 d'entrée à ld. C'est ce qu'on appelle souvent partiel
lien. Comme effet secondaire, dans les environnements qui prennent en charge la norme
Nombres magiques Unix, cette option définit également la magie du fichier de sortie
numéro à « OMAGIC ». Si cette option n'est pas spécifiée, une valeur absolue
fichier est produit. Lors de la liaison de programmes C++, cette option sera ne sauraient
résoudre les références aux constructeurs ; pour ce faire, utilisez -Ur.

Lorsqu'un fichier d'entrée n'a pas le même format que la sortie
fichier, la liaison partielle n'est prise en charge que si ce fichier d'entrée ne
contenir des déménagements. Différents formats de sortie peuvent avoir d'autres
restrictions; par exemple, certains formats basés sur "a.out" ne prennent pas en charge
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 pas
le déplacer ou l'inclure dans la sortie. Cela permet à votre sortie
fichier pour se référer symboliquement à des emplacements absolus de mémoire définis
dans d'autres programmes. Vous pouvez utiliser cette option plusieurs fois.

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

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

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

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

-T Fichier de script
--script=Fichier de script
Utilisez Fichier de script comme script de l'éditeur de liens. Ce script remplace ld's
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.
If Fichier de script n'existe pas dans le répertoire courant, "ld" regarde
pour elle dans les répertoires spécifiés par tout précédent -L options.
Multiple -T les options s'accumulent.

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

Cette option est similaire à la --scénario option sauf que
le traitement du script est retardé jusqu'à la fin du
la ligne de commande a été traitée. Cela permet aux 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 le
La ligne de commande de l'éditeur de liens ne peut pas être directement contrôlée par l'utilisateur. (par exemple
parce que la ligne de commande est construite par un autre outil, tel
as gcc).

-u symbole
--undéfini=symbole
Force symbole à saisir dans le fichier de sortie en tant que non défini
symbole. Cela peut, par exemple, déclencher l'association d'autres
modules des bibliothèques standard. -u peut être répété avec différents
des 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 des modules supplémentaires à être
tiré dans le lien, et s'il s'agit d'une erreur pour le symbole à
restent indéfinis, alors l'option --require-défini Devrait être utilisé
à la place.

--require-défini=symbole
Exiger que symbole est défini dans le fichier de sortie. Cette option est
le même que l'option --indéfini sauf que si symbole n'est pas défini
dans le fichier de sortie, l'éditeur de liens émettra une erreur et quittera.
Le même effet peut être obtenu dans un script d'éditeur de liens 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 une sortie déplaçable --- c'est-à-dire un fichier de sortie qui peut
à son tour servir d'entrée à ld. Lors de la liaison de programmes C++, -Ur
résoudre les références aux constructeurs, contrairement -r. Cela ne fonctionne pas pour
utilisé -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
uniquement pour le dernier lien partiel, et -r pour les autres.

--gestion-orpheline=MODE
Contrôlez la façon dont les sections orphelines sont gérées. Une section orpheline est une
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écrite dans Orphelin sectionsL’
option --unique affecte également la façon dont les sections sont placées.

"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
également émettre un avertissement.

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

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. Une section orpheline n'est pas
spécifiquement mentionné dans un script de l'éditeur de liens. Vous pouvez utiliser cette option
plusieurs fois sur la ligne de commande ; Il empêche la fusion normale
des sections d'entrée avec le même nom, remplaçant la section de sortie
affectations dans un script de l'éditeur de liens.

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

-x
--jeter tout
Supprimez tous les symboles locaux.

-X
--discard-locaux
Supprimez tous les symboles locaux temporaires. (Ces symboles commencent par
préfixes d'étiquettes locales spécifiques au système, généralement .L pour les systèmes ELF
or 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
l'option peut être donnée autant de fois que vous le souhaitez. Sur de nombreux systèmes, il est
nécessaire de faire précéder un trait de soulignement.

Cette option est utile lorsque vous avez un symbole non défini dans votre
lien mais je ne sais 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 la compatibilité Solaris.

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

combleloc
Combine plusieurs sections de relocalisation et les trie pour les rendre dynamiques
mise en cache de la recherche de symboles possible.

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

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

de défis
Cette option n'a de sens que lors de la construction d'un objet partagé.
Il rend disponibles les symboles définis par cet objet partagé
pour la résolution des symboles des bibliothèques chargées par la suite.

initialiser en premier
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 produire avant l'initialisation de l'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 l'exécution
finalisation de tout autre objet.

interposer
Marque l'objet que sa table de symboles interpose avant tout
symboles mais l'exécutable principal.

paresseux
Lors de la génération d'un exécutable ou d'une bibliothèque partagée, marquez-le sur
dire à l'éditeur de liens dynamique de différer la résolution des appels de fonction à
le 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.

chargementfltr
Marque l'objet que ses filtres doivent être traités immédiatement à
Durée.

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 de
variables définies dans les bibliothèques partagées. Peut entraîner une dynamique
déplacements de texte.

nœudfaultlib
Marque l'objet que la recherche des dépendances de ce
L'objet ignorera tous les 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 le
objet.

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

origine
Marque que l'objet peut contenir $ORIGIN.

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

taille_page_max=Plus-value
Définissez la taille de page maximale de l'émulation sur Plus-value.

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

taille-pile=Plus-value
Spécifiez une taille de pile pour un segment ELF "PT_GNU_STACK".
La spécification de zéro remplacera toute taille par défaut non nulle
Création du segment "PT_GNU_STACK".

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 construction
bibliothèque partagée. Cette option remplace la valeur par défaut du backend de l'éditeur de liens.
Il peut être utilisé pour contourner les délocalisations incorrectes contre
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
bibliothèque partagée résultante. Pris en charge pour i386 et x86-64.

call-nop=préfixe-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 indirecte
appel à une fonction définie localement, foo, via son emplacement GOT.
call-nop=préfixe-addr génère "0x67 appel 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
Les les archives devrait être une liste de fichiers d'archives. Ils peuvent être soit
noms de fichiers explicites, ou -l options.

Les archives spécifiées sont recherchées à plusieurs reprises jusqu'à ce qu'aucune nouvelle
des références non définies sont créées. Normalement, une archive est recherchée
une seule fois dans l'ordre spécifié 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
la ligne de commande, l'éditeur de liens ne serait pas en mesure de résoudre ce problème
référence. En regroupant les archives, elles sont toutes recherchées
jusqu'à ce que toutes les références possibles soient résolues.

L'utilisation de cette option a un coût de performance important. c'est mieux
de ne l'utiliser que lorsqu'il y a des références circulaires inévitables
entre deux ou plusieurs archives.

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

--comme requis
--no-as-besoin
Cette option affecte les balises ELF DT_NEEDED pour les bibliothèques dynamiques
mentionné sur la ligne de commande après le --comme requis option.
Normalement, l'éditeur de liens ajoutera une balise DT_NEEDED pour chaque dynamique
bibliothèque mentionnée sur la ligne de commande, que le
bibliothèque est réellement nécessaire ou non. --comme requis provoque un DT_NEEDED
tag à émettre uniquement pour une bibliothèque qui at qui point in le lien
satisfait une référence de symbole non définie non faible à partir d'un
fichier objet ou, si la bibliothèque n'est pas trouvée dans les listes DT_NEEDED
d'autres bibliothèques nécessaires, une référence de symbole non définie non faible
d'une autre bibliothèque dynamique nécessaire. Fichiers objets ou bibliothèques
apparaissant sur la ligne de commande après la bibliothèque en question ne
affecter si la bibliothèque est considérée comme nécessaire. Ceci est similaire à
les 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 au --comme requis ainsi que le --no-as-besoin option. Ils
ont été remplacés par --copy-dt-entrées-nécessaires ainsi que le
--no-copy-dt-need-entries.

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

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

-Bgroupe
Définissez le drapeau "DF_1_GROUP" dans l'entrée "DT_FLAGS_1" dans la dynamique
section. Cela oblige l'éditeur de liens d'exécution à gérer les recherches dans ce
objet et ses dépendances à effectuer uniquement à l'intérieur du groupe.
--unresolved-symbols=report-all est implicite. Cette option est uniquement
significatif 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. Ceci n'a de sens que sur
plates-formes pour lesquelles les bibliothèques partagées sont prises en charge. Le différent
les variantes de cette option sont pour la compatibilité avec divers systèmes.
Vous pouvez utiliser cette option plusieurs fois sur la ligne de commande : elle
affecte la recherche de bibliothèque -l options qui le suivent. Cette
option implique également --unresolved-symbols=report-all. Cette option
peut être utilisé avec -partagé. Cela signifie qu'une bibliothèque partagée est
en cours de création mais que toutes les références externes de la bibliothèque
doit être résolu en extrayant les entrées des bibliothèques statiques.

-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é à une bibliothèque partagée de
remplacer la définition dans la bibliothèque partagée. Cette option peut
également être utilisé avec le --export-dynamique option, lors de la création d'un
exécutable indépendant de la position, pour lier les références au global
symboles à la définition dans l'exécutable. Cette option est
uniquement significatif sur les plates-formes ELF qui prennent en charge les bibliothèques partagées et
exécutables indépendants de la position.

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

--liste-dynamique=fichier-liste-dynamique
Spécifiez le nom d'un fichier de liste dynamique à l'éditeur de liens. C'est
généralement utilisé lors de la création de bibliothèques partagées pour spécifier une liste de
symboles globaux dont les références ne doivent pas être liées au
définition au sein de la bibliothèque partagée, ou création dynamique
exécutables liés pour spécifier une liste de symboles qui devraient être
ajouté à la table des symboles dans l'exécutable. Cette option est uniquement
significatif sur les plates-formes 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 ni nom de nœud. Voir VERSION pour plus d'information.

--dynamique-liste-données
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.
Il est principalement utile pour construire une libstdc++ partagée.

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

--vérifier-sections
--no-check-sections
Demande à l'éditeur de liens ne sauraient pour vérifier les adresses des sections une fois qu'elles ont été
assigné pour voir s'il y a des chevauchements. Normalement l'éditeur de liens
effectuera cette vérification, et s'il trouve des chevauchements, il
produire des messages d'erreur appropriés. L'éditeur de liens connaît, et
tient compte des sections dans les superpositions. Le défaut
le comportement 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é
liens déplaçables. Vous pouvez forcer la vérification dans ce cas en utilisant
le --vérifier-sections option.

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

Cette option a également un effet sur la résolution des symboles dans
bibliothèques dynamiques. Avec --copy-dt-entrées-nécessaires bibliothèques dynamiques
mentionné sur la ligne de commande sera recherché récursivement,
suivant leurs balises DT_NEEDED vers d'autres bibliothèques, afin de
résoudre les symboles requis par le binaire de sortie. Avec la valeur par défaut
définissant cependant la recherche des bibliothèques dynamiques qui le suivent
s'arrêtera avec la bibliothèque dynamique elle-même. Aucun lien DT_NEEDED ne sera
être 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 table de références croisées est imprimée dans le fichier de carte.
Sinon, il est imprimé sur la sortie standard.

Le format du tableau est volontairement simple, de sorte qu'il peut être
facilement traité par un script si nécessaire. Les symboles sont imprimés
dehors, triés par nom. Pour chaque symbole, une liste de noms de fichiers est
donné. 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 un
value puis tous les fichiers où cela se produit apparaissent ensuite. Enfin tout
les fichiers qui font référence au symbole sont répertoriés.

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

Les --no-define-common option permet de découpler la décision de
affecter des adresses aux symboles communs à partir du choix de la sortie
Type de fichier; sinon, un type de sortie non délocalisable force l'affectation
adresses aux symboles communs. Utilisant --no-define-common permet
Les symboles communs qui sont référencés à partir d'une bibliothèque partagée pour être
adresses attribuées uniquement dans le programme principal. Cela élimine le
l'espace en double inutilisé dans la bibliothèque partagée, et empêche également tout
confusion possible sur la résolution du mauvais doublon lorsqu'il y a
existe de nombreux modules dynamiques avec des chemins de recherche spécialisés pour l'exécution
résolution des symboles.

--defsym=symbole=expression
Créez un symbole global dans le fichier de sortie, contenant l'absolu
adresse donnée par expression. Vous pouvez utiliser cette option autant de fois
si nécessaire pour définir plusieurs symboles dans la ligne de commande. UNE
forme limitée de l'arithmétique est pris 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 hexadécimal
constantes ou symboles. Si vous avez besoin d'expressions plus élaborées,
envisagez d'utiliser le langage de commande de l'éditeur de liens à partir d'un script. Remarque:
il ne doit pas y avoir d'espace blanc entre symbole, le signe égal
("="), et expression.

--demangle[=Catégorie]
--pas de démêlage
Ces options contrôlent s'il faut démêler les noms de symboles par erreur
messages et autres sorties. Lorsqu'on dit à l'éditeur de liens de se démêler, il
essaie de présenter les noms de symboles de manière lisible : il supprime
les traits de soulignement de début s'ils sont utilisés par le format de fichier objet, et
convertit les noms de symboles mutilés C++ en noms lisibles par l'utilisateur.
Différents compilateurs ont des styles de mutilation différents. L'optionnel
l'argument de style de démêlage peut être utilisé pour choisir un
style de démêlage pour votre compilateur. L'éditeur de liens se démêlera en
par défaut sauf si la variable d'environnement COLLECT_NO_DEMANGLE est réglé.
Ces 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 lorsque
générer des exécutables ELF liés dynamiquement. La dynamique par défaut
l'éditeur de liens est normalement correct ; ne l'utilisez pas à moins que vous ne sachiez ce que vous
faites.

--pas d'éditeur de liens dynamiques
Lors de la production d'un fichier exécutable, omettez la demande d'un
l'éditeur de liens à utiliser au moment du chargement. Ceci n'a de sens que pour ELF
exécutables qui contiennent des relocalisations dynamiques et nécessitent généralement
code de point d'entrée capable de traiter ces relocalisations.

--avertissements-fatals
--pas d'avertissements mortels
Traitez tous les avertissements comme des erreurs. Le comportement par défaut peut être
restauré avec l'option --pas d'avertissements mortels.

--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
Suffixe ".exe" ou ".dll", cette option force l'éditeur de liens à copier le
fichier de sortie à l'un du même nom avec un suffixe ".exe". Cette
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écutent pas de
image à moins qu'elle ne se termine par un suffixe ".exe".

--gc-sections
--no-gc-sections
Activer le ramasse-miettes des sections d'entrée inutilisées. il est ignoré
sur des cibles qui ne prennent pas en charge cette option. Le comportement par défaut
(de ne pas effectuer ce ramasse-miettes) peut être restauré par
en précisant --no-gc-sections sur la ligne de commande. Notez que les ordures
la collecte pour les cibles au format COFF et PE est prise 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
symboles et déplacements. La section contenant le symbole d'entrée
et toutes les sections contenant des symboles non définis sur la ligne de commande
seront conservés, de même que les sections contenant des symboles référencés par
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é, le lieur
marque récursivement comme utilisé toute section référencée par leur
déménagements. Voir --entrée ainsi que le --indéfini.

Cette option peut être paramétrée lors d'un lien partiel (activée avec
option -r). Dans ce cas, la racine des symboles conservés doit être
explicitement spécifié 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é sur stderr. Cette option n'est efficace que si les ordures
la collecte a été activée via le --gc-sections) option. le
comportement par défaut (de ne pas lister les sections qui sont supprimées)
peut être restauré en spécifiant --no-print-gc-sections sur la commande
ligne.

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

--print-memory-utilisation
Imprimer la taille utilisée, la taille totale et la taille utilisée des régions de mémoire créées
des MÉMOIRE commander. Ceci est utile sur les cibles embarquées pour
avoir une vue rapide de la quantité de mémoire libre. Le format du
la sortie a un titre et une ligne par région. C'est à la fois humain
lisible 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
Imprimer un résumé des options de ligne de commande sur la sortie standard
et sortie.

--target-aide
Imprimer un résumé de toutes les options spécifiques à la cible sur la norme
sortie et sortie.

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

--pas de conservation de mémoire
ld optimise normalement la vitesse par rapport à l'utilisation de la mémoire en mettant en cache le
tables de symboles des fichiers d'entrée en mémoire. Cette option indique ld à
optimiser à la place pour l'utilisation de la mémoire, en relisant les tables de symboles
le cas échéant. Cela peut être nécessaire si ld manque d'espace mémoire
tout en liant un grand exécutable.

--non-indéfini
-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 un partage non symbolique
bibliothèque. L'interrupteur --[no-]allow-shlib-undefined contrôle la
comportement pour signaler les références non résolues trouvées dans
bibliothèques étant liées.

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

--allow-shlib-undéfini
--no-allow-shlib-undéfini
Autorise ou interdit les symboles non définis dans les bibliothèques partagées. Cette
l'interrupteur est similaire à --non-indéfini sauf qu'il détermine le
comportement lorsque les symboles non définis sont dans une bibliothèque partagée plutôt
qu'un fichier objet ordinaire. Cela n'affecte pas le degré de non-définition
les symboles dans les fichiers objets normaux sont gérés.

Le comportement par défaut est de signaler les erreurs pour tous les symboles non définis
référencé dans les bibliothèques partagées si l'éditeur de liens est utilisé pour
créer un exécutable, mais pour les autoriser 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
les bibliothèques spécifiées au moment de la liaison sont les suivantes :

· Une bibliothèque partagée spécifiée au moment du lien peut ne pas être la même que
celui qui est disponible au moment du chargement, donc le symbole peut
réellement être résolu au moment du chargement.

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

Le noyau BeOS par exemple corrige les bibliothèques partagées au chargement
temps de sélectionner la fonction la plus appropriée pour le
architecturale actuelle. Ceci est utilisé, par exemple, pour
sélectionnez dynamiquement une fonction memset appropriée.

--pas de version non définie
Normalement, lorsqu'un symbole a une version indéfinie, l'éditeur de liens
l'ignorer. Cette option interdit les symboles avec une version non définie et
une erreur fatale sera émise à la place.

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

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

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

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

--pas d'archive entière
Désactiver l'effet de la --archive-entière option pour la suite
fichiers d'archive.

--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 ; il sort sans écrire
un fichier de sortie lorsqu'il émet une erreur quelconque.

-nostdlib
Rechercher uniquement dans les répertoires de bibliothèque explicitement spécifiés dans la commande
ligne. Les répertoires de bibliothèque spécifiés dans les scripts de l'éditeur de liens (y compris
les scripts de l'éditeur de liens spécifiés sur la 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 est configuré de cette façon, vous pouvez utiliser le --oformat option
pour spécifier le format binaire du fichier objet de sortie. Même quand
ld est configuré pour prendre en charge d'autres formats d'objet, vous ne
généralement 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 une chaîne de texte, le nom d'un format particulier
pris en charge par les bibliothèques BFD. (Vous pouvez lister le binaire disponible
formats avec objdump -i.) La commande de script "OUTPUT_FORMAT" peut
spécifiez également le format de sortie, mais cette option le remplace.

-tarte
--pic-exécutable
Créez un exécutable indépendant de la position. C'est actuellement seulement
pris en charge sur les plates-formes ELF. Les exécutables indépendants de la position sont
similaire aux bibliothèques partagées en ce sens qu'elles sont déplacées par le
linker dynamique à l'adresse virtuelle que le système d'exploitation choisit pour eux
(qui peut varier entre les invocations). Comme d'habitude dynamiquement
exécutables liés ils peuvent être exécutés et symboles définis dans le
l'exécutable ne peut pas être remplacé par les 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 est uniquement
appuyé sur quelques cibles.

Sur certaines plates-formes, le --se détendre l'option exécute une cible spécifique,
optimisations globales qui deviennent possibles lorsque l'éditeur de liens se résout
l'adressage dans le programme, comme les modes d'adressage relaxants,
synthétiser de nouvelles instructions, sélectionner une version plus courte de la version actuelle
instructions et en combinant des valeurs constantes.

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

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 peuvent ê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 éliminant tout
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ée
progressivement, pour conserver la mémoire d'exécution.

--retain-symboles-fichier ne sauraient rejeter les symboles non définis, ou
symboles nécessaires aux déménagements.

Vous ne pouvez spécifier que --retain-symboles-fichier une fois dans la commande
ligne. Il remplace -s ainsi que le -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 exécutable ELF avec des objets partagés. Tout -rchemin
les arguments sont concaténés et transmis à l'éditeur de liens d'exécution, qui
les utilise pour localiser les objets partagés au moment de l'exécution. le -rchemin option
est également utilisé lors de la localisation d'objets partagés nécessaires à
objets partagés explicitement inclus dans le lien ; voir le descriptif
des -rpath-lien option. Si -rchemin n'est pas utilisé lors de la liaison d'un
Exécutable ELF, le contenu de la variable d'environnement
"LD_RUN_PATH" sera utilisé s'il est défini.

Les -rchemin L'option peut également être utilisée sur SunOS. Par défaut, sur SunOS,
l'éditeur de liens formera un chemin de recherche d'exécution parmi tous les -L
options qui lui sont données. Si un -rchemin est utilisée, le runtime
chemin de recherche sera formé exclusivement en utilisant le -rchemin options,
ignorant le -L option. Cela peut être utile lors de l'utilisation de gcc, qui
ajoute beaucoup -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 option est
suivi d'un nom de répertoire, plutôt que d'un nom de fichier, il est
traité comme le -rchemin option.

-rpath-lien=dir
Lorsque vous utilisez ELF ou SunOS, une bibliothèque partagée peut en nécessiter une autre.
Cela se produit lorsqu'un 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'un non-
lien partagé et non déplaçable, il essaiera automatiquement de localiser
la bibliothèque partagée requise et l'inclure dans le lien, s'il est
pas inclus explicitement. Dans un tel cas, le -rpath-lien option
spécifie le premier ensemble de répertoires à rechercher. Les -rpath-lien
L'option peut spécifier une séquence de noms de répertoires soit en
en spécifiant une liste de noms séparés par des deux-points, ou en apparaissant
plusieurs fois.

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

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

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

2. Tous les répertoires spécifiés par -rchemin option. La différence
jusqu'à XNUMX fois -rchemin ainsi que le -rpath-lien est-ce que les répertoires spécifiés par
-rchemin les options sont incluses dans l'exécutable et utilisées à
temps d'exécution, tandis que le -rpath-lien l'option n'est effective qu'à
temps de liaison. Recherche -rchemin de cette manière n'est pris en charge que par
linkers natifs et cross linkers qui ont été configurés
des --avec-sysroot option.

3. Sur un système ELF, pour les linkers natifs, si le -rchemin ainsi que le
-rpath-lien n'ont pas été utilisées, recherchez le contenu du
variable d'environnement "LD_RUN_PATH".

4. Sous SunOS, si le -rchemin l'option n'a pas été utilisée, recherchez n'importe quel
répertoires spécifiés à l'aide -L options.

5. Pour un linker natif, recherchez le contenu de l'environnement
variable "LD_LIBRARY_PATH".

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

7. Les répertoires par défaut, normalement / lib ainsi que le / usr / lib.

8. Pour un éditeur de liens natif sur un système ELF, si le fichier
/etc/ld.so.conf existe, la liste des 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 continuez avec le lien.

-partagé
-B partageable
Créez une bibliothèque partagée. Ceci n'est actuellement pris en charge que sur ELF,
Plateformes XCOFF et SunOS. Sur SunOS, l'éditeur de liens sera automatiquement
créer une bibliothèque partagée si le -e l'option n'est pas utilisée et il y a
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
ordre croissant ou décroissant lorsqu'il les place dans le
sections de sortie appropriées. Les alignements de symboles considérés sont
seize octets ou plus, huit octets, quatre octets, deux octets et un
octet. Ceci afin d'éviter les écarts entre les symboles dus à l'alignement
contraintes. Si aucun ordre de tri n'est spécifié, alors décroissant
l'ordre est supposé.

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

--sort-section=alignement
Cette option appliquera "SORT_BY_ALIGNMENT" à toutes les sections génériques
modèles 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
s'il n'est pas donné.

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

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

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

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

Par exemple, sur SunOS, ld combine les entrées en double dans le symbole
table de chaînes. Cela peut réduire la taille d'un fichier de sortie avec
informations de débogage de plus de 30 pour cent. Malheureusement, le SunOS
Le programme "dbx" ne peut pas lire le programme résultant ("gdb" n'a pas
difficulté). le --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
by org. Vous pouvez utiliser cette option autant de fois que nécessaire pour
localiser plusieurs sections dans la ligne de commande. org doit être un célibataire
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: il ne doit pas y avoir d'espace blanc entre Nom de la section,
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 segment de texte.

-Segment Trodata =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 sont dans leur propre segment séparé du
texte exécutable, il définira l'adresse du 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 support x86-64
modèle de mémoire, il définira l'adresse du premier octet du
segment de données.

--symboles-non résolus=méthode
Déterminez comment gérer les symboles non résolus. Ils sont 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
bibliothèques, mais ignorez-les si elles proviennent d'un objet normal
fichiers.

ignorer les bibliothèques partagées
Signaler les symboles non résolus provenant de fichiers d'objets normaux,
mais ignorez-les s'ils proviennent de bibliothèques partagées. Cela peut
être utile lors de la création d'un binaire dynamique 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 seules 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
signalé symbole non résolu mais l'option --avertissement-symboles-non résolus
peut changer cela en un avertissement.

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

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

--warn-commun
Avertir lorsqu'un symbole commun est combiné avec un autre symbole commun ou
avec une définition de symbole. Les linkers Unix permettent cela quelque peu bâclé
pratique, mais pas les éditeurs de liens sur d'autres systèmes d'exploitation. Cette
L'option vous permet de trouver des problèmes potentiels en combinant
symboles. Malheureusement, certaines bibliothèques C utilisent cette pratique, vous
peut recevoir des avertissements sur les symboles dans les bibliothèques ainsi que dans
vos programmes.

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

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. Là
doit être une définition ou un symbole commun pour la variable
quelque part.

int i;
Un symbole commun. S'il n'y a qu'un (ou plusieurs) communs
symboles 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. S'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.

Les --warn-commun L'option peut produire cinq types d'avertissements. Chaque
l'avertissement se compose d'une paire de lignes : la première décrit le symbole
vient de rencontrer, et le second décrit le symbole précédent
rencontré avec le même nom. Un ou les deux symboles
sera 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 un
la définition du symbole est rencontrée. C'est la même chose que
le cas précédent, sauf que 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 précédent commun de même taille
symbole.

( ): 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 que le cas précédent, sauf que les symboles
sont rencontrés dans un ordre différent.

( ): 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 formats de fichier objet. Pour les formats comme COFF ou ELF, le
l'éditeur de liens ne peut pas détecter l'utilisation de constructeurs globaux.

--warn-multiple-gp
Avertir si plusieurs valeurs de pointeur global sont requises dans la sortie
déposer. Cela n'a de sens que pour certains processeurs, comme le
Alpha. Plus précisément, certains processeurs placent des constantes de grande valeur dans
une rubrique spéciale. Un registre spécial (le pointeur global) 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. Puisque
le décalage en mode relatif du registre de base est fixe et relativement
petit (par exemple, 16 bits), cela limite la taille maximale de la constante
bassin. Ainsi, dans les gros programmes, il est souvent nécessaire d'utiliser
plusieurs valeurs de pointeur global afin de pouvoir adresser tous
constantes possibles. Cette option provoque l'émission d'un avertissement
chaque fois que ce cas se produit.

--warn-une fois
N'avertir qu'une fois pour chaque symbole non défini, plutôt qu'une fois par
module qui s'y réfère.

--warn-section-aligner
Avertir si l'adresse d'une section de sortie est modifiée en raison de
alignement. En règle générale, l'alignement sera défini par une entrée
section. L'adresse ne sera modifiée que si elle n'est pas explicitement
spécifié; c'est-à-dire, si la commande "SECTIONS" ne spécifie pas de
l'adresse de départ 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.

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

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

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

Deux remarques lors de l'utilisation de cette option de gcc : Premièrement, gcc ne sait pas
à propos de cette option, vous devez donc utiliser -Wl,-archive-entière. Seconde,
n'oubliez pas d'utiliser -Wl,-pas-d'archive-entière après votre liste de
archives, car gcc ajoutera sa propre liste d'archives à votre
lien et vous ne voudrez peut-être pas que ce drapeau affecte ceux-ci également.

--envelopper=symbole
Utilisez une fonction wrapper pour symbole. Toute référence indéfinie à
symbole sera résolu en "__wrap_symbole". Tout indéfini
référence à "__réel_symbole" sera résolu à symbole.

Cela peut être utilisé pour fournir un wrapper pour une fonction système. le
la fonction wrapper doit être appelée "__wrap_symbole". S'il souhaite
appelez la fonction système, elle devrait appeler "__real_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, Alors tout
les appels à "malloc" appelleront la fonction "__wrap_malloc" à la place.
L'appel à "__real_malloc" dans "__wrap_malloc" appellera le réel
fonction "malloc".

Vous pouvez également fournir une fonction "__real_malloc", afin que
liens sans le --envelopper option réussira. Si vous faites cela, vous
ne devrait pas mettre la définition de "__real_malloc" dans le même fichier
comme "__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 ELF
En-tête de segment "PT_GNU_EH_FRAME".

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

--enable-new-dtags
--disable-new-dtags
Cet éditeur de liens peut créer les nouvelles balises dynamiques dans ELF. Mais le plus vieux
Les systèmes ELF peuvent ne pas les comprendre. Si vous spécifiez
--enable-new-dtags, les nouvelles balises dynamiques seront créées au besoin
et les anciennes balises dynamiques seront omises. Si vous spécifiez
--disable-new-dtags, aucune nouvelle balise dynamique ne sera créée. Par
par défaut, les nouvelles balises dynamiques ne sont pas créées. Notez que ceux
les 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
près de nombre. L'augmentation de cette valeur peut réduire la durée de
le temps qu'il faut à l'éditeur de liens pour effectuer ses tâches, aux dépens de
augmentant les besoins en mémoire de l'éditeur de liens. De même réduire
cette valeur peut réduire les besoins en mémoire au détriment de
la vitesse.

--hash-style=Catégorie
Définissez le type de table(s) de hachage de l'éditeur de liens. Catégorie peut être soit "sysv"
pour la section ELF classique ".hash", "gnu" pour le nouveau style GNU
section ".gnu.hash" ou "both" pour le classique ELF ".hash" et
nouvelles tables de hachage 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és à l'aide de zlib. --compress-debug-sections=aucun ne pas
compresser les sections de débogage DWARF. --compress-debug-sections=zlib-gnu
compresse les sections de débogage DWARF et renomme les noms de section de débogage en
commencer avec .zdebug au lieu de .déboguer.
--compress-debug-sections=zlib ainsi que le
--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 la cible impliquée et les options de configuration utilisées
pour construire la chaîne d'outils. La valeur par défaut peut être déterminée en examinant
la sortie de l'éditeur de liens --Aidez-moi option.

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

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

Les --réduire-les frais généraux de mémoire l'interrupteur peut également être utilisé pour activer
d'autres compromis dans les futures versions de l'éditeur de liens.

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

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

Passer "aucun" pour Catégorie désactive le paramètre de n'importe quel "--build-id"
options plus tôt sur la ligne de commande.

L'éditeur de liens i386 PE prend en charge le -partagé option, ce qui provoque la sortie
être une bibliothèque liée dynamiquement (DLL) au lieu d'une normale
exécutable. Vous devez nommer la sortie "*.dll" lorsque vous utilisez ceci
option. De plus, l'éditeur de liens prend entièrement en charge le standard "*.def"
fichiers, qui peuvent être spécifiés sur la ligne de commande de l'éditeur de liens comme un objet
(en fait, il doit précéder les archives depuis lesquelles il exporte les symboles vers
assurez-vous qu'ils sont liés, tout comme un fichier objet normal).

En plus des options communes à toutes les cibles, le linker i386 PE
prend en charge des options de ligne de commande supplémentaires spécifiques à l'i386
Cible PE. Les options qui prennent des valeurs peuvent être séparées de leurs valeurs
par un espace ou un signe égal.

--add-stdcall-alias
Si donné, symboles avec un suffixe stdcall (@nn) sera exporté en tant que-
est et aussi avec le suffixe dépouillé. [Cette option est spécifique à
le port ciblé i386 PE de l'éditeur de liens]

--base-fichier filet
Utilisez filet comme nom d'un fichier dans lequel enregistrer les adresses de base
de toutes les relocalisations nécessaires à la génération de DLL avec outil dll.
[Il s'agit d'une option spécifique à i386 PE]

--dll
Créez une DLL au lieu d'un exécutable standard. Vous pouvez également utiliser
-partagé ou spécifiez une "LIBRARY" dans un fichier ".def" donné. [Cette
l'option est spécifique au port ciblé i386 PE 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
autorise l'utilisation de noms de section de plus de huit caractères, le
limite normale pour COFF. Par défaut, ces noms ne sont autorisés que dans
fichiers objets, car les images exécutables entièrement liées ne portent pas le
Table de chaînes COFF requise pour prendre en charge les noms plus longs. En tant que GNU
extension, il est possible d'autoriser leur utilisation dans des images exécutables
aussi, ou pour (probablement inutilement !) l'interdire dans l'objet
fichiers, en utilisant ces deux options. Images exécutables générées
avec ces longs noms de section sont légèrement non standard, portant
comme ils le font une table de chaînes, et peuvent générer une sortie confuse lorsque
examiné avec des outils non compatibles avec GNU PE, tels que des visionneuses de fichiers et
tombereaux. Cependant, GDB repose sur l'utilisation de noms de section longue PE
pour trouver les sections d'informations de débogage de Dwarf-2 dans une image exécutable
au moment de l'exécution, et donc si aucune option n'est spécifiée sur la commande-
ligne, ld activera les noms de section longs, remplaçant les valeurs par défaut et
comportement techniquement correct, lorsqu'il détecte la présence de débogage
informations tout en liant une image exécutable et non en la dépouillant
symboles. [Cette option est valable pour tous les ports ciblés PE ​​du
éditeur de liens]

--enable-stdcall-fixup
--disable-stdcall-fixup
Si le lien trouve un symbole qu'il ne peut pas résoudre, il tentera
faire un « lien flou » 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 au match. Par example,
le symbole non défini "_foo" peut être lié à la fonction
"_foo@12", ou le symbole non défini "_bar@16" peut être lié au
fonction "_bar". Lorsque l'éditeur de liens fait cela, il imprime un avertissement,
car il aurait normalement dû échouer à se lier, mais parfois importer
les bibliothèques générées à partir de dll tierces peuvent avoir besoin de cette fonctionnalité pour
être utilisable. Si vous spécifiez --enable-stdcall-fixup, cette fonctionnalité est
entièrement activé et les avertissements ne sont pas imprimés. Si vous spécifiez
--disable-stdcall-fixup, cette fonctionnalité est désactivée et telle
les discordances sont considérées comme des erreurs. [Cette option est spécifique
au 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 la description de la cible. Par cette option, il est possible de
désactiver/activer le symbole-préfixe de soulignement par défaut.

--export-tous les symboles
Si donné, tous les symboles globaux dans les objets utilisés pour construire une DLL
sera exporté par la DLL. Notez qu'il s'agit de la valeur par défaut si
il n'y aurait sinon aucun symbole exporté. Lorsque les symboles sont
explicitement exporté via des fichiers DEF ou implicitement exporté via
attributs de fonction, la valeur par défaut est de ne rien exporter d'autre
sauf si cette option est donnée. Notez que les symboles "DllMain@12",
"DllEntryPoint@0", "DllMainCRTStartup@12" et "impure_ptr"
pas être automatiquement exporté. De plus, les symboles importés d'autres
Les DLL ne seront pas réexportées, pas plus que les symboles spécifiant les DLL
disposition interne telle que celles commençant par "_head_" ou se terminant
avec "_iname". De plus, aucun symbole de "libgcc", "libstd++",
"libmingw32" ou "crtX.o" sera exporté. Symboles dont les noms
commencer par "__rtti_" ou "__builtin_" ne sera pas exporté, pour vous aider
avec les DLL C++. Enfin, il existe une longue liste de cygwin-
symboles privés qui ne sont pas exportés (évidemment, cela s'applique sur
lors de la création de 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 port ciblé i386 PE de l'éditeur de liens]

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

--exclure-tous les symboles
Spécifie qu'aucun symbole ne doit être exporté automatiquement. [Cette
l'option est spécifique au port ciblé i386 PE de l'éditeur de liens]

--file-alignement
Spécifiez l'alignement du fichier. Les sections du fichier commenceront toujours
à des décalages de fichiers qui sont des multiples de ce nombre. Cette valeur par défaut
à 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
commit) à utiliser comme tas pour ce programme. La valeur par défaut est 1 Mo
réservé, 4K engagé. [Cette option est spécifique au i386 PE
port ciblé de l'éditeur de liens]

--image-base Plus-value
Utilisez Plus-value comme adresse de base de votre programme ou dll. C'est le
emplacement de mémoire le plus bas qui sera utilisé lorsque votre programme ou dll
est chargé. Pour réduire le besoin de déménager et améliorer les performances
de vos dll, chacune doit avoir une adresse de base unique et non
chevaucher toutes les autres DLL. La valeur par défaut est 0x400000 pour les exécutables,
et 0x10000000 pour les dll. [Cette option est spécifique au i386 PE
port ciblé de l'éditeur de liens]

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

--conscient des grandes adresses
S'il est fourni, le bit approprié dans le champ "Caractéristiques" du
L'en-tête COFF est défini pour indiquer que cet exécutable prend en charge
adresses virtuelles supérieures à 2 gigaoctets. Cela devrait être utilisé dans
en conjonction avec le /3GB ou /USERVA=Plus-value commutateur de mégaoctets dans le
Section "[systèmes d'exploitation]" du BOOT.INI. Sinon, ce peu
n'a aucun effet. [Cette option est spécifique aux ports PE ciblés 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 fixé par le
pilote du compilateur (par exemple Cygwin gcc) et l'exécutable ne
prend en charge les adresses virtuelles supérieures à 2 gigaoctets. [Cette option
est spécifique aux ports ciblés PE ​​de l'éditeur de liens]

--version-image-major Plus-value
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 du
éditeur de liens]

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

--version-major-du-sous-système Plus-value
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 du
éditeur de liens]

--version-image-mineur Plus-value
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 du
éditeur de liens]

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

--version-du-sous-système-mineur Plus-value
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 du
é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 un import
bibliothèque avec "dlltool" ou peut être utilisé comme référence à
symboles exportés automatiquement ou implicitement. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

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

--enable-auto-image-base
--enable-auto-image-base=Plus-value
Choisissez automatiquement la base d'image pour les DLL, en commençant éventuellement
avec socle Plus-value, à moins que l'on ne soit spécifié en utilisant le "--image-base"
argument. En utilisant un hachage généré à partir du nom de dll pour créer
bases d'images uniques pour chaque DLL, collisions en mémoire et
les délocalisations qui peuvent retarder l'exécution du programme sont évitées. [Cette
l'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. Si il n'y a pas
base d'images spécifiée par l'utilisateur ("--image-base") puis utilisez la plate-forme
défaut. [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
pour " .dll" de préférence à "lib .dll".
Ce comportement permet une distinction facile entre les DLL créées pour le
diverses "sous-plateformes": native, cygwin, uwin, pw, etc. Pour
exemple, les DLL cygwin utilisent généralement "--dll-search-prefix=cyg".
[Cette option est spécifique au port ciblé i386 PE du
éditeur de liens]

--enable-auto-importation
Faire un lien sophistiqué de "_symbol" à "__imp__symbol" pour DATA
importe à partir de DLL et crée les symboles de thunking nécessaires lorsque
construire les bibliothèques d'importation avec ces exportations de données. Remarque : utilisation de
l'extension 'auto-import' entraînera la section de texte du
fichier image à rendre inscriptible. Ceci n'est pas conforme au PE-
Spécification du format COFF publiée par Microsoft.

Remarque - l'utilisation de l'extension 'auto-import' entraînera également la lecture seule
données qui seraient normalement placées dans la section .rdata pour être
placé dans la section .data à la place. C'est pour travailler
autour d'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
peut voir ce message :

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

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

Il existe plusieurs manières de résoudre cette difficulté, indépendamment de
le type de données de la variable exportée :

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

Une deuxième solution consiste à forcer l'une des « constantes » à être un
variable -- c'est-à-dire inconnue et non optimisable au moment de la compilation.
Pour les tableaux, il y a deux possibilités : a) rendre l'indexé (le
l'adresse du tableau) une variable, ou b) faire de l'index 'constant' un
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 structures (et la plupart des autres types de données multimots) la seule option
est de faire la structure elle-même (ou le long long, ou le ...)
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 faire face à cette difficulté consiste à abandonner
'auto-import' pour le symbole incriminé et marquez-le avec
"__declspec(dllimport)". Cependant, dans la pratique, cela nécessite d'utiliser
#defines au moment de la compilation pour indiquer si vous construisez une DLL,
construire un code client qui sera lié à la DLL, ou simplement
construire/lier à une bibliothèque statique. En faisant le choix
entre les différentes méthodes de résolution de l'« adresse directe avec
problème de décalage constant, vous devriez considérer le monde réel typique
usage:

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
#définir 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 en
utiliser une interface fonctionnelle plutôt qu'une interface de données pour le
variables incriminées (par exemple set_foo() ainsi que le get_foo() accesseur
les fonctions). [Cette option est spécifique au port ciblé i386 PE
de l'éditeur de liens]

--disable-auto-importation
N'essayez pas de faire des liens sophistiqués de "_symbol" vers
"__imp__symbol" pour les importations de DONNÉES à partir de DLL. [Cette option est
spécifique au port ciblé i386 PE de l'éditeur de liens]

--enable-runtime-pseudo-reloc
Si votre code contient des expressions décrites dans --enable-auto-import
section, c'est-à-dire que DATA importe de la DLL avec un décalage différent de zéro, cette
switch créera un vecteur de 'pseudo relocalisations d'exécution' qui
peut être utilisé par l'environnement d'exécution pour ajuster les références à de tels
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 pas créer de pseudo relocalisations pour les importations de DATA avec décalage non nul
à partir de DLL. [Cette 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 du
é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. Par défaut à
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
commit) à utiliser comme pile pour ce programme. La valeur par défaut est 2 Mo
réservé, 4K engagé. [Cette option est spécifique au i386 PE
port ciblé 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 pour qui sont "natif", "windows", "console", "posix",
et "xbox". Vous pouvez également éventuellement définir la version du sous-système.
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"
de l'en-tête du fichier PE : [Ces options sont spécifiques au PE ciblé
ports de l'éditeur de liens]

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

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

--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é a été introduite 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 ce
l'image.

--pas de liaison
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 la valeur par défaut
comportement car il correspond au code hérité et cela signifie que l'image
fonctionnera avec d'autres outils propriétaires. Le problème avec ça
par défaut, 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 le
horodatage, ce qui garantit que les binaires produits à partir de
les sources se compareront à l'identique.

La cible C6X uClinux utilise un format binaire appelé DSBT pour prendre en charge
bibliothèques partagées. Chaque bibliothèque partagée du 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 du courant
bibliothèque exécutable ou partagée pour Taille. La valeur par défaut est de créer un
table avec 64 entrées.

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

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

Les linkers 68HC11 et 68HC12 prennent en charge des options spécifiques pour contrôler le
cartographie de commutation de banque de mémoire 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 lointaine appelée en utilisant
une instruction "jsr" (cela 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 les MÉMOIRE spécification qui décrit la fenêtre de banque de mémoire.
La définition de cette région est ensuite utilisée 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 GOT
génération lors de la liaison pour les cibles 68K.

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

Les options suivantes sont prises en charge pour contrôler l'instruction microMIPS
génération lors de la liaison pour les cibles MIPS.

--insn32
--no-insn32
Ces options contrôlent le choix des instructions microMIPS utilisées dans
code généré par l'éditeur de liens, tel que celui dans le PLT ou paresseux
moignons de reliure, ou en détente. Si --insn32 est utilisé, alors le
l'éditeur de liens n'utilise que des encodages d'instructions sur 32 bits. Par défaut ou si
--no-insn32 est utilisé, tous les codages d'instructions sont utilisés, y compris
16 bits dans la mesure du 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. S'il n'y a pas de "GNUTARGET" dans l'environnement, ld
utilise le format naturel de la cible. Si "GNUTARGET" est réglé sur
"default" alors BFD tente de découvrir le format d'entrée en examinant
fichiers d'entrée binaires ; cette méthode réussit souvent, mais il existe des possibilités
ambiguïtés, puisqu'il n'y a pas de méthode pour s'assurer que le nombre magique
utilisé pour spécifier les formats de fichier objet est unique. Cependant, le
procédure de configuration pour BFD sur chaque système place le
format pour ce système en premier dans la liste de recherche, donc les ambiguïtés sont
résolu en faveur de la convention.

"LDEMULATION" détermine l'émulation par défaut si vous n'utilisez pas le -m
option. L'émulation peut affecter divers aspects du comportement de l'éditeur de liens,
en particulier le script de l'éditeur de liens par défaut. Vous pouvez lister les disponibles
émulations avec le --verbeux or -V option. Si la -m l'option n'est pas
utilisé et que la variable d'environnement "LDEMULATION" n'est pas définie, le
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, alors il sera par défaut
à ne pas démanteler les symboles. Cette variable d'environnement est utilisée dans un
de la même manière par le programme d'encapsulation de l'éditeur de liens "gcc". La valeur par défaut peut
être dépassé par le --démêler ainsi que le --pas de démêlage options.

Utilisez i686-linux-gnu-ld en ligne en utilisant les services onworks.net


Serveurs et postes de travail gratuits

Télécharger des applications Windows et Linux

Commandes Linux

Ad