Section courante

A propos

Section administrative du site

LINK

Liaison
MS-DOS 2 Externe

Syntaxe

LINK obj_file[+obj_file...][,[exe_file]][,[map_file]][,[library [+library...]]] [options] [;]
LINK @response_file

Paramètres

Nom Description
obj_file Ce paramètre permet d'indiquer le nom d'un fichier contenant un module objet relocalisable produit par MASM ou par un compilateur de langage de haut niveau. L'extension par défaut est .OBJ.
exe_file Ce paramètre permet d'indiquer le nom du fichier exécutable à produire par LINK (extension par défaut = .EXE).
map_file Ce paramètre permet d'indiquer le nom du fichier ou du périphérique de caractères devant recevoir une liste des noms, des adresses de chargement et des longueurs des segments dans exe_file. Valeur par défaut = périphérique NUL; extension par défaut = .MAP.
library Ce paramètre permet d'indiquer le nom d'une bibliothèque de modules d'objets à rechercher pour résoudre les références externes dans le(s) fichier(s) objet (extension par défaut = .LIB).
response_file Ce paramètre permet d'indiquer le nom d'un fichier texte contenant les paramètres LINK dans l'ordre dans lequel ils sont fournis lors d'une session LINK interactive.
/CP:n Ce paramètre permet de définir le nombre maximum de paragraphes de mémoire supplémentaires requis par exe_file. La valeur par défaut est 65535.
/CPARMAXALLOC:n Ce paramètre permet de définir le nombre maximum de paragraphes de mémoire supplémentaires requis par exe_file. La valeur par défaut est 65535.
/DS Ce paramètre permet de charger les données dans DGROUP à l'extrémité supérieure du segment de données.
/DSALLOCATE Ce paramètre permet de charger les données dans DGROUP à l'extrémité supérieure du segment de données.
/DO Ce paramètre permet d'organiser les segments selon la convention de classement des segments de langage Microsoft.
/DOSSEG Ce paramètre permet d'organiser les segments selon la convention de classement des segments de langage Microsoft.
/E Ce paramètre permet de compresser les séquences répétitives d'octets et optimise la table de relocalisation de exe_file.
/EXEPACK Ce paramètre permet de compresser les séquences répétitives d'octets et optimise la table de relocalisation de exe_file.
/HI Ce paramètre permet de provoquer le chargement de exe_file aussi haut que possible en mémoire lorsque exe_file est exécuté.
/HIGH Ce paramètre permet de provoquer le chargement de exe_file aussi haut que possible en mémoire lorsque exe_file est exécuté.
/HE Ce paramètre permet de répertorier les options LINK à l'écran. Aucun autre commutateur ou nom de fichier ne doit être utilisé avec ce commutateur.
/HELP Ce paramètre permet de répertorier les options LINK à l'écran. Aucun autre commutateur ou nom de fichier ne doit être utilisé avec ce commutateur.
/LI Ce paramètre permet de copier les informations de numéro de ligne (si disponibles) de obj_file vers map_file. Si aucun fichier de cartographie n'a été spécifié, ce commutateur en crée un.
/LINENUMBERS Ce paramètre permet de copier les informations de numéro de ligne (si disponibles) de obj_file vers map_file. Si aucun fichier de cartographie n'a été spécifié, ce commutateur en crée un.
/M Ce paramètre permet de copier une liste de tous les symboles publics déclarés dans obj_file dans map_file. Si aucun fichier de cartographie n'a été spécifié, ce commutateur en crée un.
/MAP Ce paramètre permet de copier une liste de tous les symboles publics déclarés dans obj_file dans map_file. Si aucun fichier de cartographie n'a été spécifié, ce commutateur en crée un.
/NOD Ce paramètre permet de faire en sorte que LINK ignore tous les noms de bibliothèque insérés dans le fichier objet par le compilateur de langage.
/NODEFAULTLIBRARYSEARCH Ce paramètre permet de faire en sorte que LINK ignore tous les noms de bibliothèque insérés dans le fichier objet par le compilateur de langage.
/NOG Ce paramètre permet de faire en sorte que LINK ignore les associations GROUP lors de l'attribution d'adresses.
/NOGROUPASSOCIATION Ce paramètre permet de faire en sorte que LINK ignore les associations GROUP lors de l'attribution d'adresses.
/NOI Ce paramètre permet de faire que LINK respecte la casse lors de la résolution des noms externes.
/NOIGNORECASE Ce paramètre permet de faire que LINK respecte la casse lors de la résolution des noms externes.
/O:n Ce paramètre permet de remplacer le numéro d'interruption utilisé par le gestionnaire de recouvrement (0 à 255, par défaut = 63 ou 3Fh). Ce commutateur doit être utilisé uniquement lors de la liaison avec un module d'exécution à partir d'un compilateur de langage qui prend en charge les recouvrements.
/OVERLAYINTERRUPT:n Ce paramètre permet de remplacer le numéro d'interruption utilisé par le gestionnaire de recouvrement (0 à 255, par défaut = 63 ou 3Fh). Ce commutateur doit être utilisé uniquement lors de la liaison avec un module d'exécution à partir d'un compilateur de langage qui prend en charge les recouvrements.
/P Ce paramètre permet de provoquer la pause de LINK et invite l'utilisateur à changer de disque avant d'écrire le fichier exe_file.
/PAUSE Ce paramètre permet de provoquer la pause de LINK et invite l'utilisateur à changer de disque avant d'écrire le fichier exe_file.
/SE:n Ce paramètre permet de définir le nombre maximum de segments pouvant être traités (1 à 1024, par défaut = 128).
/SEGMENTS:n Ce paramètre permet de définir le nombre maximum de segments pouvant être traités (1 à 1024, par défaut = 128).
/ST:n Ce paramètre permet de définir la taille du segment de pile de l'exe_file sur n octets 1 à 65535.
/STACK:n Ce paramètre permet de définir la taille du segment de pile de l'exe_file sur n octets 1 à 65535.

Description

Cette commande permet de lancer le fabriquant de liaisons. Ainsi, elle effectue la combinaison des modules d'objets relocalisables dans un fichier exécutable (.EXE).

Remarques

Liste des messages

Message Description
filename is not a valid library Le fichier spécifié comme bibliothèque de module objet est corrompu ou n'est pas une bibliothèque au format créé par l'utilitaire LIB de Microsoft.
About to generate .EXE file Changez la disquette dans l'unité de disque X et appuyez sur Enter. Le commutateur /P a été utilisé dans la ligne de commande. La commande LINK invite l'utilisateur à changer de disque avant que LINK ne crée le fichier contenant le programme exécutable.
Ambiguous switch error: "option" Un commutateur valide n'a pas été entré après une barre oblique (/) dans la ligne de commande.
Array element size mismatch Un tableau commun FAR a été déclaré avec au moins deux tailles d'élément de tableau différentes (par exemple, une fois en tant que tableau de caractères et une fois en tant que tableau de nombres réels). Cette erreur se produit uniquement avec les programmes produits par le compilateur Microsoft C ou d'autres compilateurs prenant en charge les tableaux communaux FAR; cela ne se produit pas avec les fichiers objets produits par MASM.
Attempt to access data outside segment bounds Un enregistrement de données dans un module objet spécifiait des données s'étendant au-delà de la fin d'un segment. Il s'agit d'une erreur de conversion. Notez quel compilateur ou assembleur a produit le module objet non valide et informez Microsoft Corporation.
Attempt to put segment name in more than one group in file filename Un segment a été déclaré membre de deux groupes. Corrigez le code source et recréez les modules objet.
Bad value for cparMaxAlloc La valeur spécifiée à l'aide de l'option /C:n n'est pas comprise entre 1 et 65535.
Cannot create temporary file Le disque de destination n'a pas suffisamment d'espace pour le fichier temporaire ou le répertoire racine est plein.
Cannot find file filename Changez de disquette et appuyez sur Enter. Le fichier objet spécifié est introuvable dans l'unité de disque actuel.
Cannot find library: filename Entrez une nouvelle spécification de fichier : le fichier de bibliothèque spécifié est introuvable ou n'existe pas. Entrez la lettre de l'unité de disque correcte, vérifiez l'orthographe du nom de fichier et du chemin, ou assurez-vous que la variable d'environnement LIB a été correctement configurée.
Cannot nest response files Un fichier de réponses a été nommé dans un fichier de réponses. Révisez le fichier de réponses pour éliminer le fichier imbriqué.
Cannot open list file Le disque de destination n'a pas suffisamment d'espace pour la liste ou le répertoire racine est plein.
Cannot open response file: filename LINK ne trouve pas le fichier de réponses spécifié.
Cannot open run file Le disque de destination n'a pas suffisamment d'espace pour le fichier .EXE ou le répertoire racine est plein.
Cannot open temporary file Le disque de destination n'a pas suffisamment d'espace pour le fichier temporaire ou le répertoire racine est plein.
Cannot reopen list file Le disque d'origine n'a pas été remplacé à la demande. Redémarrez LINK.
Common area longer than 65536 bytes Le programme a plus de 64 Ko de variables communes. Cette erreur se produit uniquement avec les programmes produits par le compilateur Microsoft C ou d'autres compilateurs prenant en charge les variables communes.
Data record too large Un enregistrement LEDATA (dans un module objet) contient plus de 1024 octets de données. Il s'agit d'un symptôme d'une erreur dans le compilateur utilisé pour générer le module objet.
Dup record too large Un enregistrement LIDATA (dans un module objet) contient plus de 512 octets de données. Cette erreur peut être causée par une définition de structure complexe ou par une série d'opérateurs DUP profondément imbriqués.
File not suitable for /EXEPACK, relink without Le fichier lié au commutateur /E aurait été plus petit s'il n'avait pas été compressé. Reliez sans le commutateur /E.
Fixup overflow near number in segment name in filename offset number Un groupe est supérieur à 64 Ko, le fichier source d'origine contient un saut court intersegment ou un appel court intersegment, le nom d'un élément de données est en conflit avec celui d'un sous-programme de bibliothèque ou une déclaration EXTRN est placée dans le mauvais segment.
Incorrect DOS version, use DOS 2.0 or later La commande LINK utilise les appels de gestion de fichiers étendus pour fournir la prise en charge de chemin d'accès et, par conséquent, ne fonctionne pas avec les versions de MS-DOS antérieures à 2.0.
Insufficient stack space La mémoire disponible est insuffisante pour exécuter la commande LINK.
Interrupt number exceeds 255 Le nombre spécifié dans le commutateur /O:n n'est pas compris entre 0 et 255.
Invalid numeric switch specification Une valeur incorrecte a été saisie avec l'une des options LINK.
Invalid object module L'un des modules objet n'est pas valide. Recompilez le fichier source.
NEAR/HUGE conflict Des définitions contradictoires NEAR et HUGE ont été données pour une variable commune. Cette erreur se produit uniquement avec les programmes produits par le compilateur Microsoft C ou d'autres compilateurs prenant en charge les variables communes.
Nested left parentheses Une parenthèse ouvrante (à gauche) est nécessaire sur le côté gauche d'un module de recouvrement.
Nested right parentheses Une parenthèse fermante (à droite) est nécessaire sur le côté droit d'un module de recouvrement.
No object modules specified Aucun nom de fichier objet n'a été spécifié dans la ligne de commande ou le fichier de réponses.
Object not found L'un des fichiers objets spécifiés dans la ligne de commande est introuvable.
Out of space on list file Le disque de destination n'a pas suffisamment d'espace pour la liste.
Out of space on run file Le disque de destination n'a pas suffisamment d'espace pour le fichier .exe.
Out of space on scratch file L'unité de disque du disque par défaut n'a pas suffisamment d'espace pour les fichiers temporaires.
Overlay manager symbol already defined: name Un nom de symbole a été défini entrant en conflit avec l'un des noms spéciaux du gestionnaire de recouvrement. Utilisez un autre nom de symbole.
Please replace original diskette Dans l'unité de disque X et appuyez sur Enter. Le commutateur /P a été spécifié dans la ligne de commande et le disque pour recevoir le fichier .EXE produit par LINK a déjà été inséré. Ce message indique que le fichier .exe a été créé avec succès et que le disque d'origine doit à nouveau être placé dans l'unité de disque.
Relocation table overflow Plus de 32768 appels longs, sauts longs ou autres pointeurs longs ont été trouvés dans le programme. Le programme devra peut-être être restructuré pour réduire le nombre de références FAR. Les utilisateurs de Pascal et FORTRAN devraient essayer de désactiver l'option de débogage avant de restructurer le programme.
Response line too long Une ligne dans un fichier de réponses contenait plus de 127 caractères.
Segment limit set too high Le nombre spécifié dans le commutateur /SE:n n'était pas compris entre 1 et 1024.
Segment limit too high Il n'y a pas assez de mémoire disponible pour LINK pour allouer des tables pour décrire le nombre de segments demandés (par défaut = 128 ou le nombre spécifié dans le commutateur /SE:n). Utilisez le commutateur /SE:n pour spécifier un plus petit nombre de segments ou modifiez la configuration du système pour augmenter la quantité de mémoire disponible.
Segment size exceeds 64K Le programme est un programme de petit modèle avec plus de 64 Ko de code ou de données, un programme de modèle compact avec plus de 64 Ko de code ou un programme de modèle moyen avec plus de 64 Ko de données. La sélection d'un modèle différent ou la modification du code de programme peut être nécessaire pour terminer avec succès le processus LINK.
Stack size exceeds 65536 bytes La taille spécifiée pour la pile dans le commutateur /ST:n était trop grande ou la longueur combinée de plusieurs segments de pile déclarés dépassait 64 Ko.
Symbol already defined: "symbol" L'un des symboles de recouvrement spéciaux requis pour la prise en charge de recouvrement a été précédemment défini.
Symbol defined more than once: "symbol" in file Un symbole a été défini plusieurs fois dans le module objet. Supprimez la définition de symbole supplémentaire.
Symbol table overflow Le programme a plus de 256 Ko d'informations symboliques (public, external, segment, group, class, file,...). Éliminez autant de symboles publics que possible, combinez des modules et/ou des segments et recréez les fichiers objets.
Terminated by user Ctrl+C ou Ctrl+Break a été enfoncé, provoquant la fin prématurée de la session LINK.
Too many external symbols in one module Un module objet contient plus que la limite de 1023 symboles externes.
Too many group-, segment-, and class-names in one module L'un des modules objet du programme contient trop de noms de groupes, de segments et de classes. Le fichier source du module objet peut devoir être divisé ou restructuré.
Too many groups Le programme définit plus de 9 groupes (dont DGROUP). Les groupes doivent être combinés ou éliminés.
Too many GRPDEFs in one module La commande LINK a rencontré plus de 9 définitions de groupe (GRPDEF) dans un seul module objet. Réduisez le nombre de GRPDEF ou divisez le module objet.
Too many libraries Plus de 16 bibliothèques ont été spécifiées. Combinez des bibliothèques ou utilisez des modules objet nécessitant moins de bibliothèques.
Too many overlays Le programme définit plus de 63 recouvrements. Réduisez le nombre de recouvrements.
Too many segments Le programme a plus que le nombre maximum de segments spécifié par la valeur par défaut de 128 ou avec le commutateur /SE:n. Utilisez le commutateur /SE:n pour spécifier un plus grand nombre de segments.
Too many segments in one module Un module objet a plus de 255 segments. Divisez le module ou combinez des segments.
Too many TYPDEFs Un module objet contient trop d'enregistrements TYPDEF (ces enregistrements décrivent des variables communes). Cette erreur se produit uniquement avec les programmes produits avec le compilateur Microsoft C ou d'autres compilateurs prenant en charge les variables communes.
Unexpected end-of-file on library Ce message peut indiquer que le disque contenant la bibliothèque en cours d'utilisation a été supprimé prématurément.
Unexpected end-of-file on scratch file Le disque contenant VM.TMP a été supprimé.
Unmatched left parenthesis Une erreur de syntaxe a été détectée dans la spécification d'une structure de recouvrement.
Unmatched right parenthesis Une erreur de syntaxe a été détectée dans la spécification d'une structure de recouvrement.
Unrecognized switch error: "option" Un caractère non reconnu a été entré après une barre oblique (/) dans la ligne de commande.
Unresolved COMDEF; Microsoft internal error Ceci est un sérieux problème d'ordre interne.
Unresolved externals: list Un symbole a été déclaré externe (EXTRN) dans un module objet mais n'a pas été déclaré PUBLIC dans le module objet dans lequel il a été défini, ou une spécification de bibliothèque nécessaire a été omise de la ligne de commande ou du fichier de réponses.
VM.TMP is an illegal file name VM.TMP a été spécifié comme nom de fichier objet. Si un fichier objet nommé VM.TMP existe, renommez-le.
Warning: load-high disables exepack Les commutateurs /H et /E ne peuvent pas être utilisés en même temps.
Warning: no stack segment Le programme ne contient aucun segment avec le type de combiné STACK. Ce message peut être ignoré s'il existe une raison spécifique pour ne pas définir une pile (par exemple, si le fichier .EXE sera ultérieurement converti en fichier .COM) ou pour en définir un sans le type de combinaison STACK.
WARNING: Segment longer than reliable size Bien que les segments de code puissent atteindre 65 536 octets, les segments de code de plus de 65 500 octets peuvent ne pas être fiables sur le microprocesseur Intel 80286. Réduisez tous les segments de code à 65500 octets ou moins.
Warning: too many public symbols Le commutateur /M a été utilisé pour demander une liste triée des symboles publics dans le fichier de cartographie, mais il y a trop de symboles à trier. LINK produira à la place une liste non triée.

Exemples

L'utilisation la plus simple de la commande LINK consiste à traiter un seul fichier objet pour produire un fichier exécutable, en utilisant toutes les valeurs par défaut. Par exemple, pour traiter le fichier SHELL.OBJ, créez un fichier exécutable nommé SHELL.EXE et recherchez uniquement les bibliothèques par défaut, tapez :

LINK SHELL;Enter

Le point-virgule après le nom de fichier oblige LINK à utiliser les valeurs par défaut pour tous les autres paramètres. Pour lier trois fichiers objets nommés SHELL.OBJ, VIDEO.OBJ et DOSINT.OBJ dans un fichier exécutable nommé SHELL.EXE et rechercher la bibliothèque DEVLIB.LIB sur l'unité de disque B avant de rechercher les bibliothèques par défaut, tapez :

LINK SHELL+VIDEO+DOSINT,,,B:DEVLIBEnter

Si la commande LINK est entrée sans paramètres, LINK invite l'utilisateur à fournir les informations nécessaires. Par exemple, la session interactive suivante lie le fichier MENUMGR.OBJ au fichier exécutable MENUMGR.EXE, crée un fichier de cartographie nommé MENUMGR.MAP et recherche la bibliothèque d'émulateur mathématique à virgule flottante EM.LIB avant toute bibliothèque par défaut :

LINKEnter

on obtiendra un résultat ressemblant à ceci :

Microsoft (R) 8086 Object Linker Version 3.05
Copyright (C) Microsoft Corp 1983,1984,1985. All rights reserved.

Object Modules [.OBJ]: MENUMGR Enter
Run File [MENUMGR.EXE]: Enter
List File [NUL.MAP]: MENUMGR Enter
Libraries [.LIB]: EM Enter


Dernière mise à jour : Lundi, le 24 Mai 2021