PRÉNOM ld - Utilisation de LD, l'éditeur de liens GNU SYNOPSIS ld options objfile … LA 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 programme consiste à exécuterld. ld accepte les fichiers du langage de commande de l'éditeur de liens écrits dans un sur-ensemble de la syntaxe du langage de commande de l'éditeur de l'éditeur de liens AT & T, afin de fournir un contrôle explicite et total du processus de liaison. Cette page de manuel ne décrit pas le langage de commande. voir leld entrée dans "info", ou dans le manuel ld: le lieur GNU, pour plus de détails sur le langage de commande et sur d’autres aspects du lieur GNU. Cette version deld utilise les bibliothèques BFD à usage général pour opérer sur des fichiers objets. Ceci permetld lire, combiner et écrire des fichiers objet dans de nombreux formats différents - par exemple, COFF ou "a.out". Différents formats peuvent être liés pour produire tout type de fichier objet disponible. Outre sa flexibilité, le lieur GNU est plus utile que d’autres lieurs pour fournir des informations de diagnostic. De nombreux linkers abandonnent l'exécution immédiatement après avoir rencontré une erreur; dès que possible,ld continue l'exécution, ce qui vous permet d'identifier d'autres erreurs (ou, dans certains cas, d'obtenir un fichier de sortie malgré l'erreur). Le lieur GNUld est destiné à couvrir un large éventail de situations et à être aussi compatible que possible avec d'autres linkers. En conséquence, vous avez plusieurs choix pour contrôler son comportement. OPTIONS L'éditeur de liens prend en charge une multitude d'options de ligne de commande, mais dans la pratique, peu d'entre elles sont utilisées dans un contexte particulier. Par exemple, un usage fréquent deld consiste à lier des fichiers objet Unix standard sur un système Unix standard pris en charge. Sur un tel système, pour lier un fichier "hello.o": Oui /lib/crt0.o hello.o -lcCela raconteld produire un fichier appelé sortie à la suite de la liaison du fichier "/lib/crt0.o" avec "hello.o" et de la bibliothèque "libc.a", qui proviendra des répertoires de recherche standard. (Voir la discussion de la-l option ci-dessous.) Certaines des options de ligne de commande pourld peut être spécifié à n'importe quel endroit de la ligne de commande. Cependant, les options faisant référence à des fichiers, tels que-l ou-Tfaire en sorte que le fichier soit lu au point où l'option apparaît dans la ligne de commande, par rapport aux fichiers objet et aux autres options de fichier. La répétition d'options autres que des fichiers avec un argument différent n'aura aucun autre effet ou remplacera les occurrences précédentes (celles situées à gauche sur la ligne de commande) de cette option. Les options qui peuvent être spécifiées de manière significative plus d’une fois sont indiquées dans les descriptions ci-dessous. Les arguments non-options sont des fichiers objets ou des archives qui doivent être liés ensemble. Elles peuvent suivre, précéder ou être combinées avec des options de ligne de commande, à ceci près qu'un argument de fichier objet ne peut pas être placé entre une option et son argument. Généralement, l'éditeur de liens est appelé avec au moins un fichier objet, mais vous pouvez spécifier d'autres formes de fichiers d'entrée binaires à l'aide de-l, -Ret le langage de commande de script. Si non des fichiers d’entrée binaires sont spécifiés, l’éditeur de liens ne produit aucune sortie et envoie le messageAucun fichier d'entrée. Si l'éditeur de liens ne peut pas reconnaître le format d'un fichier objet, il considérera qu'il s'agit d'un script de l'éditeur de liens. Un script spécifié de cette manière augmente le script de l'éditeur de liens principal utilisé pour le lien (le script de l'éditeur de liens par défaut ou celui spécifié à l'aide de-T). Cette fonctionnalité permet à l'éditeur de liens de créer des liens avec un fichier qui semble être un objet ou une archive, mais définit simplement certaines valeurs de symbole ou utilise "INPUT" ou "GROUP" pour charger d'autres objets. Notez que spécifier un script de cette manière ne fait qu'augmenter le script de l'éditeur de liens principal; Utilisez le-T possibilité de remplacer entièrement le script de l'éditeur de liens par défaut. Pour les options dont le nom correspond à une seule lettre, les arguments d'option doivent suivre la lettre d'option sans espace, ou être définis séparément, immédiatement après l'option qui les requiert. Pour les options dont le nom est composé de plusieurs lettres, un ou deux tirets peuvent précéder le nom de l’option; par exemple,-trace-symbole et--trace-symbol sont équivalents. Remarque - il existe une exception à cette règle. Les options à plusieurs lettres commençant par un «o» minuscule ne peuvent être précédées que de deux tirets. C’est pour réduire la confusion avec le-o option. Donc par exemple-omagique définit le nom du fichier de sortie surla magie tandis que--omagic définit le drapeau NMAGIC sur la sortie. Les arguments pour les options à plusieurs lettres doivent soit être séparés du nom de l'option par un signe égal, soit être donnés sous forme d'arguments séparés immédiatement après l'option qui les requiert. Par exemple,--trace-symbol foo et--trace-symbol = foo sont équivalents. Les abréviations uniques des noms des options à plusieurs lettres sont acceptées. Remarque - si l’éditeur de liens est appelé indirectement, via un pilote de compilateur (par exemple,gcc) alors toutes les options de la ligne de commande de l'éditeur de liens doivent être préfixées par-Wl, (ou ce qui est approprié pour le pilote de compilateur particulier) comme ceci: gcc -Wl, - startgroup foo.o bar.o -Wl, - groupe d'extrémitéCeci est important, car sinon le programme du pilote du compilateur peut supprimer les options de l’éditeur de liens en silence, ce qui entraînerait un mauvais lien. Voici un tableau des commutateurs de ligne de commande génériques acceptés par l'éditeur de liens GNU: -une mot-clé Cette option est prise en charge pour la compatibilité HP / UX. le mot-clé l'argument doit être l'une des chaînesarchiver, partagé, oudéfaut. -archive est fonctionnellement équivalent à-Bstatique, et les deux autres mots-clés sont fonctionnellement équivalents à-Dynamique. Cette option peut être utilisée autant de fois que vous le souhaitez. -UNE architecture --architecture = architecture Dans la version actuelle deld, cette option n’est utile que pour la famille d’architectes Intel 960. En celald la configuration, la architecture L'argument identifie l'architecture particulière de la famille 960, activant certaines sauvegardes et modifiant le chemin de recherche de la bibliothèque d'archives. Les futures versions deld 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 plusieurs types de fichiers objets. Si tonld est configuré de cette façon, vous pouvez utiliser le-b option permettant de spécifier le format binaire des fichiers d’objet d’entrée qui suivent cette option sur la ligne de commande. Même quandld est configuré pour prendre en charge d'autres formats d'objet, vous n'avez généralement pas besoin de spécifier cela, carld devrait être configuré pour attendre comme format d'entrée par défaut le format le plus courant sur chaque machine. format d'entrée est une chaîne de texte, le nom d'un format particulier pris en charge par les bibliothèques BFD. (Vous pouvez lister les formats binaires disponibles avecobjdump -i.) Vous pouvez utiliser cette option si vous liez des fichiers avec un format binaire inhabituel. Vous pouvez aussi utiliser-b changer de format de manière explicite (lors de la liaison de fichiers objet de formats différents), en incluant-b format d'entrée avant chaque groupe de fichiers objet dans un format particulier. Le format par défaut provient de la variable d'environnement "GNUTARGET". Vous pouvez également définir le format d'entrée à partir d'un script, à l'aide de la commande "CIBLE"; -c Fichier de commande IRM --mri-script = Fichier de commande IRM Pour la compatibilité avec les lieurs produits par MRI,ld accepte les fichiers de script écrits dans un autre langage de commande restreint, décrit dans la section Fichiers de script compatibles MRI de la documentation de GNU ld. Introduire les fichiers de script MRI avec l'option-c; Utilisez le-T option pour exécuter des scripts de l'éditeur de liens écrits dans le but généralld langage de script. Si IRM-cmdfile n'existe pas,ldle cherche dans les répertoires spécifiés par tout-L options. -ré -dc -dp Ces trois options sont équivalentes. plusieurs formulaires sont pris en charge pour la compatibilité avec d'autres lieurs. Ils attribuent un espace aux symboles communs même si un fichier de sortie déplaçable est spécifié (avec-r). La commande de script "FORCE_COMMON_ALLOCATION" a le même effet. -e entrée --entrée = entrée Utilisation entrée comme symbole explicite pour le début de l'exécution de votre programme, plutôt que le point d'entrée par défaut. S'il n'y a pas de symbole nommé entrée , l'éditeur de liens essaiera d'analyser entrée en tant que nombre et utilisez-le comme adresse de saisie (le numéro sera interprété en base 10; vous pouvez utiliser un début0x pour la base 16, ou un leader0 pour la base 8). -E --export-dynamique Lorsque vous créez un fichier exécutable lié dynamiquement, ajoutez tous les symboles à la table des symboles dynamiques. La table des symboles dynamiques est l'ensemble des symboles visibles depuis les objets dynamiques au moment de l'exécution. Si vous n'utilisez pas cette option, la table des symboles dynamiques ne contiendra normalement que les symboles référencés par un objet dynamique mentionné dans le lien. Si vous utilisez "dlopen" pour charger un objet dynamique qui doit renvoyer aux symboles définis par le programme plutôt qu'à un autre objet dynamique, vous devrez probablement utiliser cette option pour lier le programme lui-même. Vous pouvez également utiliser le script de version pour contrôler les symboles à ajouter à la table des symboles dynamiques si le format de sortie le prend en charge. Voir la description de--version-script dans @ ref {VERSION}. -BE Lier des objets big-endian. Cela affecte le format de sortie par défaut. -EL Liez des objets little-endian. Cela affecte le format de sortie par défaut. -F --auxiliaire prénom Lors de la création d'un objet partagé ELF, définissez le champ interne DT_AUXILIARY sur le nom spécifié. Cela indique à l'éditeur de liens dynamique que la table des symboles de l'objet partagé doit être utilisée comme filtre auxiliaire sur la table des symboles de l'objet partagé prénom . Si vous liez ultérieurement un programme à cet objet filtre, alors, lorsque vous exécutez le programme, l'éditeur de liens dynamique verra le champ DT_AUXILIARY. Si l'éditeur de liens dynamique résout des symboles de l'objet filtre, il vérifiera d'abord s'il existe une définition dans l'objet partagé. prénom . S'il en existe un, il sera utilisé à la place de la définition dans l'objet filtre. L'objet partagé prénom n'a pas besoin d'exister. Ainsi l'objet partagé prénom peut être utilisé pour fournir une implémentation alternative de certaines fonctions, par exemple pour le débogage ou pour des performances spécifiques à la machine. Cette option peut être spécifiée plusieurs fois. Les entrées DT_AUXILIARY seront créées dans l'ordre dans lequel elles apparaissent sur la ligne de commande. -F prénom --filtre prénom Lors de la création d'un objet partagé ELF, définissez le champ interne DT_FILTER sur le nom spécifié. Cela indique à l'éditeur de liens dynamique que la table des symboles de l'objet partagé en cours de création doit être utilisée comme filtre sur la table des symboles de l'objet partagé. prénom . Si vous liez ultérieurement un programme à cet objet filtre, alors, lorsque vous exécutez le programme, l'éditeur de liens dynamique verra le champ DT_FILTER. L'éditeur de liens dynamique résoudra les symboles conformément à la table de symboles de l'objet filtre, comme d'habitude, mais établira un lien avec les définitions trouvées dans l'objet partagé. prénom . Ainsi, l’objet filtre peut être utilisé pour sélectionner un sous-ensemble des symboles fournis par l’objet. prénom . Certains anciens linkers utilisaient le-F option tout au long d'une chaîne de compilation permettant de spécifier le format de fichier objet pour les fichiers objet d'entrée et de sortie. L’éditeur de liens GNU utilise d’autres mécanismes à cette fin:-b, --format, --oformat options, la commande "TARGET" dans les scripts de l'éditeur de liens et la variable d'environnement "GNUTARGET". L’éditeur de liens GNU ignorera la-F option lorsque vous ne créez pas d'objet partagé ELF. -fini prénom Lors de la création d'un objet exécutable ou partagé ELF, appelez NAME lorsque l'objet exécutable ou partagé est déchargé, en définissant DT_FINI sur l'adresse de la fonction. Par défaut, l'éditeur de liens utilise "_fini" comme fonction à appeler. -g Ignoré. Fourni pour la compatibilité avec d'autres outils. -G valeur --gpsize = valeur Définissez la taille maximale des objets à optimiser à l'aide du registre de stratégie de groupe sur Taille . Cela n'a de sens que pour les formats de fichier objet tels que MIPS ECOFF, qui prend en charge la mise en place de petits et grands objets dans différentes sections. Ceci est ignoré pour les autres formats de fichier objet. -h prénom -soname = prénom Lors de la création d'un objet partagé ELF, définissez le champ DT_SONAME interne sur le nom spécifié. Lorsqu'un exécutable est lié à un objet partagé comportant un champ DT_SONAME, il est alors tenté par l'éditeur de liens dynamique de charger l'objet partagé spécifié par le champ DT_SONAME au lieu d'utiliser le nom de fichier attribué à l'éditeur de liens. -je Effectuer un lien incrémentiel (identique à l'option-r). -init prénom Lors de la création d'un objet exécutable ou partagé ELF, appelez NAME lorsque l'objet exécutable ou partagé est chargé, en définissant DT_INIT sur l'adresse de la fonction. Par défaut, l'éditeur de liens utilise "_init" comme fonction à appeler. -l archiver --library = archiver Ajouter un fichier d'archive archiver à la liste des fichiers à relier. Cette option peut être utilisée autant de fois que vous le souhaitez.ld va rechercher dans sa liste de chemins les occurrences de "libarchive.a" pour chaque archiver spécifié. Sur les systèmes prenant en charge les bibliothèques partagées,ld peut également rechercher des bibliothèques avec des extensions autres que ".a". Plus précisément, sur les systèmes ELF et SunOS,ld cherchera dans un répertoire une bibliothèque avec une extension ".so" avant de rechercher celle avec une extension ".a". Par convention, une extension ".so" indique une bibliothèque partagée. L'éditeur de liens recherchera une archive une seule fois, à l'emplacement où elle est spécifiée sur la ligne de commande. Si l'archive définit un symbole non défini dans un objet apparaissant avant l'archive sur la ligne de commande, l'éditeur de liens inclura le (s) fichier (s) approprié (s) à partir de l'archive. Cependant, un symbole non défini dans un objet apparaissant plus tard sur la ligne de commande ne fera pas que l'éditeur de liens effectue une nouvelle recherche dans l'archive. Voir le-( option pour un moyen de forcer l'éditeur de liens à rechercher des archives plusieurs fois. Vous pouvez répertorier la même archive plusieurs fois sur la ligne de commande. Ce type de recherche dans les archives est standard pour les lieurs Unix. Cependant, si vous utilisezld sur AIX, notez qu'il est différent du comportement de l'éditeur de liens AIX. -L chercheur --library-path = chercheur Ajouter un chemin chercheur à la liste des cheminsld va rechercher des bibliothèques d'archives etld scripts de contrôle. Vous pouvez utiliser cette option autant de fois que vous le souhaitez. Les répertoires sont recherchés dans l'ordre dans lequel ils sont spécifiés sur la ligne de commande. Les répertoires spécifiés sur la ligne de commande sont recherchés avant les répertoires par défaut. Tout-L les options s'appliquent à tous-l options, quel que soit l'ordre dans lequel elles apparaissent. Si chercheur commence par "=", le "=" sera remplacé par le préfixe racine , un chemin spécifié lors de la configuration de l’éditeur de liens. L'ensemble de chemins par défaut recherché (sans être spécifié avec-L) dépend du mode d’émulationld 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 liaison à l'aide de la commande "SEARCH_DIR". Les répertoires spécifiés de cette manière sont recherchés au moment où le script de l'éditeur de liens apparaît dans la ligne de commande. -m émulation Émuler le émulation linker. Vous pouvez lister les émulations disponibles avec le--verbeux ou-Voptions. Si la-m Si l'option n'est pas utilisée, l'émulation provient de la variable d'environnement "LDEMULATION", si celle-ci est définie. Sinon, l'émulation par défaut dépend de la configuration de l'éditeur de liens. -M --print-map Imprimer une carte de liens vers la sortie standard. Un mappage de liens fournit des informations sur le lien, notamment: * Où les fichiers d'objets et les symboles sont mappés en mémoire. * Comment les symboles communs sont alloués. * Tous les membres de l’archive inclus dans le lien, avec mention du symbole qui a amené le membre de l’archive à entrer. -n --nmagic Désactivez l'alignement des sections des sections et marquez la sortie comme "NMAGIC" si possible. -N --omagic Définissez les sections de texte et de données pour qu'elles soient lisibles et inscriptibles. En outre, n'alignez pas le segment de données avec des pages et désactivez la liaison avec les bibliothèques partagées. Si le format de sortie prend en charge les nombres magiques de style Unix, marquez la sortie comme "OMAGIC". --no-omagique Cette option annule la plupart des effets de la-N option. Il définit la section de texte en lecture seule et oblige le segment de données à être aligné sur une page. Remarque - cette option n'active pas la liaison avec des bibliothèques partagées. Utilisation-Dynamique pour ça. -o sortie --output = sortie Utilisation sortie comme nom du programme produit parld; si cette option n'est pas spécifiée, le nom a.out est utilisé par défaut. La commande de script "OUTPUT" peut également spécifier le nom du fichier de sortie. -O niveau Si niveau est une valeur numérique supérieure à zérold optimise la sortie. Cela pourrait prendre beaucoup plus de temps et ne devrait donc probablement être activé que pour le binaire final. -q --emit-relocs Conservez les sections et le contenu de la relocalisation dans des exécutables entièrement liés. Les outils d’optimisation et d’analyse post-lien peuvent avoir besoin de ces informations pour effectuer les modifications correctes des exécutables. Cela se traduit par des exécutables plus volumineux. Cette option est actuellement prise en charge uniquement sur les plates-formes ELF. -r --relocateable Générer une sortie relocalisable --- c’est-à-dire générer un fichier de sortie pouvant à son tour servir d’entrée àld. Ceci est souvent appelé liaison partielle . Comme effet secondaire, dans les environnements prenant en charge les nombres magiques Unix standard, cette option définit également le nombre magique du fichier de sortie sur "OMAGIC". Si cette option n'est pas spécifiée, un fichier absolu est généré. Lors de la liaison de programmes C ++, cette option ne sera pas 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 le fichier de sortie, la liaison partielle n'est prise en charge que si ce fichier d'entrée ne contient aucune relocalisation. Différents formats de sortie peuvent avoir des restrictions supplémentaires. Par exemple, certains formats basés sur "a.out" ne supportent pas du tout la liaison partielle avec des fichiers d'entrée dans d'autres formats. Cette option fait la même chose que-je. -R nom de fichier --just-symboles = nom de fichier Lire les noms de symboles et leurs adresses depuis nom de fichier , mais ne le déplacez pas et ne l'incluez pas dans la sortie. Cela permet à votre fichier de sortie de se référer symboliquement aux emplacements absolus de la mémoire définis dans d'autres programmes. Vous pouvez utiliser cette option plusieurs fois. Pour assurer la compatibilité avec d'autres lieurs ELF, si le-R Cette option est suivie d'un nom de répertoire plutôt que d'un nom de fichier, elle est traitée comme le-rpath option. -s --strip-all Omettre toutes les informations de symbole du fichier de sortie. -S --strip-debug Omettez les informations de symbole du débogueur (mais pas tous les symboles) du fichier de sortie. -t --trace Imprimer les noms des fichiers d’entrée en tant queld les traite. -T Fichier de script --script = Fichier de script Utilisation Fichier de script comme script de l'éditeur de liens. Ce script remplaceldLe script de l'éditeur de liens par défaut (plutôt que d'y ajouter), donc fichier de commande doit spécifier tout le nécessaire pour décrire le fichier de sortie. Si Fichier de script n'existe pas dans le répertoire en cours, "ld" le recherche dans les répertoires spécifiés par l'un des précédents-L options. Plusieurs-T les options s'accumulent. -u symbole --undefined = symbole Obliger symbole à entrer dans le fichier de sortie en tant que symbole non défini. Cela peut, par exemple, déclencher la liaison de modules supplémentaires à partir de bibliothèques standard.-u peut être répété avec différents arguments d’option pour entrer des symboles non définis supplémentaires. Cette option est équivalente à la commande de script "EXTERN" de l’éditeur de liens. -Ur Pour les programmes autres que C ++, cette option est équivalente à-r: il génère une sortie relogeable --- c’est-à-dire un fichier de sortie qui peut à son tour servir d’entrée àld. Lors de la liaison de programmes C ++,-Ur Est-ce que résoudre les références aux constructeurs, contrairement à-r. Ça ne marche pas à utiliser-Ur sur des fichiers eux-mêmes liés à-Ur; une fois que la table constructeur a été construite, elle ne peut plus être ajoutée. Utilisation-Ur seulement pour le dernier lien partiel, et-r pour les autres. --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 optionnel SECTION l'argument est manquant, pour chaque section d'entrée orpheline. Une section orpheline est une section non spécifiquement mentionnée dans un script de l'éditeur de liens. Vous pouvez utiliser cette option plusieurs fois sur la ligne de commande. Cela empêche la fusion normale des sections d'entrée portant le même nom, en annulant les affectations de section en sortie dans un script de l'éditeur de liens. -v --version -V Afficher le numéro de version pourld. le-V Cette option répertorie également les émulations prises en charge. -X --discard-all Supprimer tous les symboles locaux. -X --discard-local Supprimer tous les symboles locaux temporaires. Pour la plupart des cibles, il s’agit de tous les symboles locaux dont le nom commence parL. -y symbole --trace-symbol = symbole Imprimer le nom de chaque fichier lié dans lequel symbole apparaît. Cette option peut être donnée autant de fois que vous le souhaitez. Sur de nombreux systèmes, il est nécessaire d’ajouter un trait de soulignement. Cette option est utile lorsque vous avez un symbole non défini dans votre lien mais que vous ne savez pas d'où vient la référence. -Y chemin Ajouter chemin au chemin de recherche par défaut de la bibliothèque. Cette option existe pour la compatibilité Solaris. -z mot-clé Les mots clés reconnus sont "initfirst", "interpose", "loadfltr", "nodefaultlib", "nodelete", "nodlopen", "nodump", "now", "origin", "combreloc", "nocombreloc" et "nocopyreloc ". Les autres mots-clés sont ignorés pour la compatibilité Solaris. "initfirst" marque l'objet à initialiser au moment de l'exécution avant tout autre objet."interpose" marque l'objet que sa table de symboles interpose avant tous les symboles sauf l'exécutable principal. "loadfltr" marque l'objet que ses fichiers doivent être traités immédiatement à l'exécution. "nodefaultlib" marque l'objet que la recherche des dépendances de cet objet ignorera tout chemin de recherche de bibliothèque par défaut. "nodelete" marque que l'objet ne doit pas être déchargé au moment de l'exécution. "nodlopen" marque l'objet non disponible pour "dlopen". "nodump" marque que l'objet ne peut pas être vidé par "dldump". "maintenant" marque l'objet avec la liaison d'exécution non lazy. "origine" marque que l'objet peut contenir $ ORIGIN. "defs" n'autorise pas les symboles non définis. "muldefs" autorise plusieurs définitions. "combreloc" combine plusieurs sections de relocalisation et les trie pour permettre la mise en cache dynamique de la recherche de symboles. "nocombreloc" désactive la combinaison de plusieurs sections de relocalisation. "nocopyreloc" désactive la production de relocs de copie. -( les archives -) --start-group les archives --end-group le les archives devrait être une liste de fichiers d'archive. Ils peuvent être soit des noms de fichiers explicites, soit-loptions. Les archives spécifiées sont recherchées à plusieurs reprises jusqu'à ce qu'aucune nouvelle référence non définie ne soit créée. Normalement, une archive est recherchée une seule fois dans l'ordre spécifié sur la ligne de commande. Si un symbole de cette archive est nécessaire pour résoudre un symbole non défini auquel un objet fait référence dans une archive qui apparaîtra plus tard sur la ligne de commande, l'éditeur de liens ne pourrait pas résoudre cette référence. En regroupant les archives, elles font toutes l'objet d'une recherche répétée jusqu'à ce que toutes les références possibles soient résolues. L'utilisation de cette option a un coût de performance important. Il est préférable de ne l'utiliser que lorsqu'il existe des références circulaires inévitables entre deux archives ou plus. --accept-unknown-input-arch --no-accept-unknown-input-arch Indique à l'éditeur de liens d'accepter les fichiers d'entrée dont l'architecture ne peut pas être reconnue. L'hypothèse est que l'utilisateur sait ce qu'il fait et veut délibérément créer un lien dans ces fichiers d'entrée inconnus. C'était le comportement par défaut de l'éditeur de liens, avant la version 2.14. A partir de la version 2.14, le comportement par défaut consiste à rejeter de tels fichiers d’entrée.--accept-unknown-input-arch Une option a été ajoutée pour restaurer l'ancien comportement. -affirmer mot-clé Cette option est ignorée pour la compatibilité SunOS. -Dynamique dy -call_shared Lien contre les bibliothèques dynamiques. Cela n'a de sens que sur les 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 sont destinées à la compatibilité avec divers systèmes. Vous pouvez utiliser cette option plusieurs fois sur la ligne de commande: elle affecte la recherche par la bibliothèque.-l les options qui le suivent. -Bgroup Activez l'indicateur "DF_1_GROUP" dans l'entrée "DT_FLAGS_1" de la section dynamique. Cela force l'éditeur de liens d'exécution à gérer les recherches dans cet objet et ses dépendances à effectuer uniquement à l'intérieur du groupe.--no-indéfini est impliqué. Cette option n'a de sens que sur les plates-formes ELF prenant en charge les bibliothèques partagées. -Bstatique -dn -non_shared -statique Ne liez pas contre des bibliothèques partagées. Cela n'a de sens que sur les plates-formes pour lesquelles les bibliothèques partagées sont prises en charge. Les différentes variantes de cette option sont destinées à la compatibilité avec divers systèmes. Vous pouvez utiliser cette option plusieurs fois sur la ligne de commande: elle affecte la recherche par la bibliothèque.-l les options qui le suivent. -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 n'a de sens que sur les plateformes ELF qui prennent en charge les bibliothèques partagées. --check-sections --no-check-sections Demande à l'éditeur de liens ne pas vérifier les adresses de section après leur affectation pour voir s’il ya des chevauchements. Normalement, l'éditeur de liens effectuera cette vérification et, s'il trouve des chevauchements, il générera des messages d'erreur appropriés. L'éditeur de liens connaît et prend en compte les sections superposées. Le comportement par défaut peut être restauré à l'aide du commutateur de ligne de commande--check-sections. --cref Affiche une table de références croisées. Si un fichier de carte 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 de la table est intentionnellement simple, afin qu’il puisse être facilement traité par un script si nécessaire. Les symboles sont imprimés, triés par nom. Pour chaque symbole, une liste de noms de fichiers est donnée. Si le symbole est défini, le premier fichier répertorié est l'emplacement de la définition. Les fichiers restants contiennent des références au symbole. --no-define-common Cette option empêche l’attribution d’adresses à des symboles communs. La commande de script "INHIBIT_COMMON_ALLOCATION" a le même effet. le--no-define-common l'option permet de découpler la décision d'attribuer des adresses aux symboles communs du choix du type de fichier de sortie; sinon, un type de sortie non relocalisable force l'attribution d'adresses à des symboles communs. En utilisant--no-define-common permet aux adresses communes référencées à partir d'une bibliothèque partagée de se voir attribuer des adresses uniquement dans le programme principal. Ceci élimine l'espace de duplication inutilisé dans la bibliothèque partagée et évite également toute confusion éventuelle lors de la résolution du duplicata erroné lorsqu'il existe de nombreux modules dynamiques avec des chemins de recherche spécialisés pour la résolution des symboles d'exécution. --defsym symbole = expression Créer un symbole global dans le fichier de sortie, contenant l’adresse absolue donnée par expression . Vous pouvez utiliser cette option autant de fois que nécessaire pour définir plusieurs symboles dans la ligne de commande. Une forme arithmétique limitée est supportée pour la expression dans ce contexte: vous pouvez donner une constante hexadécimale ou le nom d'un symbole existant, ou utiliser "+" et "-" pour ajouter ou soustraire des constantes ou des symboles hexadécimaux. 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 devrait y avoir aucun espace blanc entre symbole , le signe égal (``=''), et expression . --demangle = style --no-demangle Ces options déterminent si les noms de symboles doivent être démêlés dans les messages d'erreur et les autres résultats. Lorsque le lieur est appelé à se démêler, il essaie de présenter les noms de symbole de manière lisible: il supprime les traits de soulignement principaux s'ils sont utilisés par le format de fichier objet et convertit les noms de symbole mutilés C ++ en noms lisibles par l'utilisateur. Différents compilateurs ont des styles différents. L'argument de style de démêlage facultatif peut être utilisé pour choisir un style de démêlage approprié pour votre compilateur. L'éditeur de liens se démêle par défaut sauf si la variable d'environnementCOLLECT_NO_DEMANGLE est réglé. Ces options peuvent être utilisées pour remplacer la valeur par défaut. --dynamic-linker fichier Définissez le nom de l'éditeur de liens dynamique. Cela n'a de sens que lors de la génération d'exécutables ELF liés dynamiquement. L'éditeur de liens dynamique par défaut est normalement correct; ne l'utilisez pas si vous ne savez pas ce que vous faites. --embedded-relocs Cette option n'a de sens que si vous associez le code PIC incorporé MIPS, généré par l'option -membedded-pic au compilateur et à l'assembleur GNU. Il oblige l'éditeur de liens à créer une table pouvant être utilisée au moment de l'exécution pour déplacer toutes les données initialisées de manière statique sur des valeurs de pointeur. Voir le code dans testsuite / ld-empic pour plus de détails. avertissements Traitez tous les avertissements comme des erreurs. --force-suffixe Assurez-vous qu'un fichier de sortie a un suffixe .exe. Si un fichier de sortie entièrement lié construit correctement ne comporte pas de suffixe ".exe" ou ".dll", cette option oblige l'éditeur de liens à copier le fichier de sortie dans l'un des mêmes noms avec le suffixe ".exe". Cette option est utile lorsque vous utilisez des makefiles Unix non modifiés sur un hôte Microsoft Windows, car certaines versions de Windows n'exécutent pas d'image sauf si elle se termine par un suffixe ".exe". --no-gc-sections --gc-sections Activer la récupération de place des sections d'entrée inutilisées. Il est ignoré sur les cibles qui ne prennent pas en charge cette option. Cette option n'est pas compatible avec-r, ne devrait pas non plus être utilisé avec des liens dynamiques. Le comportement par défaut (de ne pas effectuer cette récupération de place) peut être restauré en spécifiant--no-gc-sections sur la ligne de commande. --Aidez-moi Imprimez un résumé des options de ligne de commande sur la sortie standard et quittez. --target-help Imprimez un résumé de toutes les options spécifiques à la cible sur la sortie standard et quittez. -Carte mapfile Imprimer une carte de lien vers le fichier mapfile . Voir la description de la-M option ci-dessus. --no-keep-memory ld optimise normalement la vitesse d'utilisation de la mémoire en mettant en mémoire cache les tables de symboles des fichiers d'entrée. Cette option ditld pour optimiser l'utilisation de la mémoire, en relisant les tables de symboles si nécessaire. Cela peut être nécessaire sild manque d’espace mémoire lors de la liaison d’un fichier exécutable volumineux. --no-indéfini -z defs Normalement, lors de la création d'une bibliothèque partagée non symbolique, les symboles non définis sont autorisés et doivent être résolus par le chargeur d'exécution. Ces options interdisent de tels symboles non définis. --allow-multiple-definition -z muldefs Normalement, lorsqu'un symbole est défini plusieurs fois, l'éditeur de liens signalera une erreur fatale. Ces options permettent plusieurs définitions et la première définition sera utilisée. --allow-shlib-undefined Autorise les symboles non définis dans les objets partagés même lorsque --no-undefined est défini. Le résultat net sera que les symboles non définis dans les objets normaux déclencheront toujours une erreur, mais que les symboles non définis dans les objets partagés seront ignorés. L'implémentation de no_undefined suppose que l'éditeur de liens au moment de l'exécution va s'étouffer avec des symboles non définis. Cependant, il existe au moins un système (BeOS) dans lequel les symboles non définis dans les bibliothèques partagées sont normaux, car le noyau les corrige au moment du chargement pour sélectionner la fonction la plus appropriée pour l'architecture actuelle. C'EST À DIRE. sélectionner dynamiquement une fonction memset appropriée. Apparemment, il est également normal que les bibliothèques partagées HPPA aient des symboles non définis. --no-undefined-version Normalement, lorsqu'un symbole a une version non définie, l'éditeur de liens l'ignorera. Cette option interdit les symboles avec une version non définie et une erreur fatale sera émise à la place. --no-warn-mismatch Normalementld donnera une erreur si vous essayez de lier des fichiers d'entrée qui ne correspondent pas pour une raison quelconque, peut-être parce qu'ils ont été compilés pour différents processeurs ou pour différentes endianités. Cette option ditld 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 garantissant que les erreurs de l'éditeur de liens sont inappropriées. --no-toute-archive Éteignez l'effet de la--whole-archive option pour les fichiers d'archive ultérieurs. --noinhibit-exec Conservez le fichier de sortie exécutable chaque fois qu'il est encore utilisable.Normalement, l'éditeur de liens ne générera pas de fichier de sortie s'il rencontre des erreurs lors du processus de liaison. il se ferme sans écrire de fichier de sortie lorsqu'il génère une erreur, quelle qu'elle soit. -nostdlib Rechercher uniquement dans les répertoires de bibliothèques spécifiés explicitement sur la ligne de commande. 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 plusieurs types de fichiers objets. Si tonld est configuré de cette façon, vous pouvez utiliser le--oformat possibilité de spécifier le format binaire du fichier objet de sortie. Même quandld est configuré pour prendre en charge d'autres formats d'objet, vous n'avez généralement pas besoin de spécifier cela, carld 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 les formats binaires disponibles avecobjdump -i.) La commande de script "OUTPUT_FORMAT" peut également spécifier le format de sortie, mais cette option le remplace. -qmagic Cette option est ignorée pour la compatibilité Linux. -Qy Cette option est ignorée pour la compatibilité SVR4. --se détendre Une option avec des effets dépendants de la machine. Cette option n'est prise en charge que sur quelques cibles. Sur certaines plateformes, le--se détendre Cette option effectue des optimisations globales qui deviennent possibles lorsque l’éditeur de liens résout l’adressage dans le programme, par exemple en relâchant les modes d’adresse et en synthétisant les nouvelles instructions du fichier objet de sortie. Sur certaines plates-formes, ces optimisations globales de temps de liaison peuvent rendre impossible le débogage symbolique de l'exécutable résultant. C'est le cas de la famille de processeurs Matsushita MN10200 et MN10300. Sur les plates-formes où cela n'est pas pris en charge,--se détendre est accepté, mais ignoré. --retain-symbol-file nom de fichier Conserver seulement les symboles listés dans le fichier nom de fichier , jetant tous les autres. nom de fichier est simplement un fichier plat, avec un nom de symbole par ligne. Cette option est particulièrement utile dans les environnements (tels que VxWorks) où une grande table de symboles globale est accumulée progressivement, afin de conserver la mémoire d'exécution. --retain-symbol-file Est-ce que ne pas éliminez les symboles non définis ou les symboles nécessaires aux déplacements. Vous pouvez seulement spécifier--retain-symbol-file une fois dans la ligne de commande. Il annule-s et-S. -rpath 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 ELFexecutable avec des objets partagés. Tout-rpath les arguments sont concaténés et passés à l'éditeur de liens au moment de l'exécution, qui les utilise pour localiser les objets partagés au moment de l'exécution. le-rpath Cette option est également utilisée pour localiser les objets partagés nécessaires aux objets partagés explicitement inclus dans le lien. voir la description du-rpath-link option. Si-rpath 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. le-rpath Cette option peut également être utilisée sur SunOS. Par défaut, sur SunOS, l’éditeur de liens formera un patch de recherche au moment de l’exécution-L les options sont données. Si un-rpath Si l'option est utilisée, le chemin de recherche à l'exécution sera formé exclusivement à l'aide du-rpath options, en ignorant les-Loptions. Cela peut être utile lors de l’utilisation de gcc, ce qui ajoute beaucoup-L options qui peuvent être des systèmes de fichiers montés sur NFS. Pour assurer la compatibilité avec d'autres lieurs ELF, si le-R Cette option est suivie d'un nom de répertoire plutôt que d'un nom de fichier, elle est traitée comme le-rpath option. -rpath-link DIR Lorsque vous utilisez ELF ou SunOS, une bibliothèque partagée peut en nécessiter une autre. Cela se produit lorsqu'un 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 lorsqu'il crée un lien non partagé et non relogeable, il essaie automatiquement de localiser la bibliothèque partagée requise et de l'inclure dans le lien, s'il n'est pas explicitement inclus. Dans un tel cas, le-rpath-link option spécifie le premier ensemble de répertoires à rechercher. le-rpath-link Cette option peut spécifier une séquence de noms de répertoires 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 le chemin de recherche qui a peut-être été compilé en dur dans une bibliothèque partagée. Dans un tel cas, il est possible d'utiliser involontairement un chemin de recherche différent de celui utilisé par l'éditeur de liens d'exécution. L'éditeur de liens utilise les chemins de recherche suivants pour localiser les bibliothèques partagées requises. 1. Tous les répertoires spécifiés par-rpath-link options. 2. Tous les répertoires spécifiés par-rpath options. La différence entre-rpath et-rpath-link est-ce que les répertoires spécifiés par-rpath Les options sont incluses dans l'exécutable et utilisées au moment de l'exécution, alors que-rpath-link L'option n'est efficace qu'au moment de la liaison. C'est pour l'éditeur de liens natif seulement. 3. Sur un système ELF, si le-rpath et les options "rpath-link" n'étant pas utilisées, recherchez le contenu de la variable d'environnement "LD_RUN_PATH". C'est pour l'éditeur de liens natif seulement. 4. Sur SunOS, si le-rpath l’option n’a pas été utilisée, recherchez tous les répertoires spécifiés à l’aide de-L options. 5. Pour un éditeur de liens natif, le contenu de la variable d'environnement "LD_LIBRARY_PATH". 6. Pour un éditeur de liens ELF natif, les répertoires de "DT_RUNPATH" ou "DT_RPATH" d'une bibliothèque partagée sont recherchés pour les bibliothèques partagées dont il a besoin.Les entrées "DT_RPATH" sont ignorées s'il existe des entrées "DT_RUNPATH". 7. Les répertoires par défaut, normalement / lib et / usr / lib . 8. Pour un éditeur de liens natif sur un système ELF, si le fichier /etc/ld.so.conf existe, la liste des répertoires présents dans ce fichier. Si la bibliothèque partagée requise n'est pas trouvée, l'éditeur de liens émettra un avertissement et poursuivra avec le lien. -partagé -Bshareable Créer une bibliothèque partagée. Ceci n'est actuellement pris en charge que sur les plateformes ELF, XCOFF et SunOS. Sur SunOS, l’éditeur de liens créera automatiquement une bibliothèque partagée si le-e Cette option n’est pas utilisée et le lien contient des symboles non définis. --sort-common Cette option ditld pour trier les symboles communs par taille lorsqu'il les place dans les sections de sortie appropriées. Tout d'abord, tous les symboles à un octet, puis tous les deux octets, puis tous les quatre octets, et tout le reste. Cela permet d'éviter les espaces entre les symboles dus aux contraintes d'alignement. --split-by-file Taille Semblable à--split par relocalisation mais crée une nouvelle section de sortie pour chaque fichier d'entrée lorsque Taille est atteint. Taille La valeur par défaut est 1 si elle n’est pas donnée. --split-by-reloc compter Essaie de créer des sections supplémentaires dans le fichier de sortie afin qu'aucune section de sortie du fichier ne contienne plus de compter les délocalisations. Ceci est utile pour générer d’énormes fichiers déplaçables à télécharger dans certains noyaux en temps réel avec le format de fichier objet COFF; étant donné que COFF ne peut représenter plus de 65535 déménagements dans une seule section. Notez que cela ne fonctionnera pas avec les formats de fichier objet qui ne supportent pas les sections arbitraires. L'éditeur de liens ne divisera pas les sections d'entrée individuelles pour la redistribution. Ainsi, si une seule section d'entrée contient plus de compter relocations une section de sortie contiendra autant de relocalisations. compter La valeur par défaut est 32768. --Statistiques Calculer et afficher des statistiques sur le fonctionnement de l'éditeur de liens, telles que le temps d'exécution et l'utilisation de la mémoire. - format traditionnel Pour certaines cibles, la sortie deld diffère à certains égards de la sortie d’un éditeur de liens existant. Ce commutateur demandeld d'utiliser le format traditionnel à la place. Par exemple, sur SunOS,ld combine les entrées en double dans la table des chaînes de symboles. Cela peut réduire de plus de 30% la taille d'un fichier de sortie contenant des informations de débogage complètes. Malheureusement, le programme SunOS "dbx" ne peut pas lire le programme résultant ("gdb" ne présente aucun problème). le- format traditionnel commutateur ditld ne pas combiner les entrées en double. --section-start Nom de la section = org Localisez une section dans le fichier de sortie à l’adresse absolue donnée par org . Vous pouvez utiliser cette option autant de fois que nécessaire pour localiser plusieurs sections dans la ligne de commande. org doit être un entier hexadécimal unique; pour la compatibilité avec d’autres lieurs, vous pouvez omettre le premier0x généralement associé à des valeurs hexadécimales. Remarque: il ne devrait y avoir aucun espace blanc entre Nom de la section , le signe égal (``=''), et org . -Tbss org -Tata org -Texte org Utilisation org comme adresse de départ pour --- respectivement --- le segment "bss", "data" ou "text" du fichier de sortie. org doit être un entier hexadécimal unique; pour la compatibilité avec d’autres lieurs, vous pouvez omettre le premier0x généralement a