Utilisation de ILINK32 et ILINK64 en ligne de commande

De RAD Studio
Aller à : navigation, rechercher

Remonter à Utilitaires de ligne de commande - Index


Pour des informations sur les détails techniques concernant ILINK32 et ILINK64, consultez la page Détails techniques concernant ILINK32 et ILINK64.

ILINK32.EXE est l'interface de ligne de commande pour ILINK32, le lieur C++ pour Windows 32 bits. ILINK64.EXE est l'interface de ligne de commande pour ILINK64, le lieur C++ pour Windows 64 bits.

Syntaxe de la ligne de commande

Pour ILINK 32 :

ILINK32 [@<respfile>][<options>] <startup> <myobjs>, [<exefile>],
        [<mapfile>], [<libraries>], [<deffile>], [<resfiles>]

Pour ILINK64 :

ILINK64 <objfiles>, <exefile>, <mapfile>, <libfiles>, <deffile>, <resfiles>


Options de ligne de commande

Les options de la ligne de commande de ILINK32.EXE et ILINK64.EXE sont sensibles à la casse. ILINK32. EXE et ILINK64.EXE prennent en charge les options de ligne de commande listées dans le tableau suivant :

Remarque : ILINK32 et ILINK64 peuvent traiter les options avec un tiret - ou une barre oblique / (par exemple, l'option /Tpe peut aussi s'écrire -Tpe).


Options du lieur

Option Description
@<respfile> Utilise le fichier de réponse <respfile>.
/A:dd Pour ILINK32, spécifie l'alignement de fichier (pour la compatibilité descendante, utilisez /Af).
/Af:nnnn Spécifie l'alignement de fichier ; donnez une valeur hexadécimale ou décimale à nnnn. nnnn doit être une puissance de 2.

Les limites d'octets 0x200 = 512 représentent la valeur par défaut.

/Ao:nnnn Spécifie l'alignement d'objet ; donnez une valeur hexadécimale ou décimale à nnnn. nnnn doit être une puissance de 2.

Les limites d'octets 0x1000 = 4096 représentent la valeur par défaut.

/aa Construit une application Windows 64 bits.
/ad Construit un pilote de périphérique Windows 32/64 bits.
/ap Construit une application console Windows 32/64 bits.
/B:xxxx Spécifie l'adresse de base de l'image et retire la table de relogement.
/b:xxxx Spécifie l'adresse de base de l'image et préserve la table de relogement des DLL. Les objets successifs sont alignés sur les frontières d'adresse de 64K linéaires. Améliore les temps de chargement et les performances à l'exécution.

Recommandé pour la génération des DLL.
Par défaut, cette option est désactivée.

/C Actualise les fichiers d'état du lieur. Efface tous les fichiers d'état du lieur avant chaque liaison, puis recrée les fichiers et poursuit la liaison.
/c Considère comme significative la casse dans les symboles publics et externes.

Par défaut, cette option est activée.

/d

Chargements différés d'une DLL. La DLL spécifiée n'est chargée ou initialisée que lorsqu'un point d'entrée de la DLL est appelé.

/D:xxxx Enregistre dans l'image PE la description spécifiée.
/Enn Spécifie le nombre maximal d'erreurs.
/GC Insère une chaîne de commentaire dans l'image directement après la table objet dans l'en-tête de fichier PE. Vous pouvez spécifier plusieurs chaînes.

Par défaut, cette option est désactivée.

/GD Génère un fichier .RC compatible Delphi (fichier DRC).

Par défaut, cette option est désactivée.

/GF:xxxx Définit les indicateurs d'image. Les indicateurs xxxx sont :
  • -GF SWAPNET copie l'image dans un fichier d'échange local et l'exécute de là si l'image réside sur une unité réseau.
  • -GF SWAPCD copie l'image dans un fichier d'échange local et l'exécute si l'image réside sur un support amovible (CD, lecteur zip).
  • -GF UNIPROCESSOR empêche l'application de s'exécuter sur un système multiprocesseur.
  • -GF LARGEADDRESSAWARE indique au système d'exploitation que l'application accepte les adresses supérieures à 4 Go.
  • -GF AGGRESSIVE réduit l'ensemble de travail d'une application quand celle-ci est inactive (adapté aux écrans de veille et autres processus qu'il vaut mieux laisser à l'écart des processus principaux).
/Gk Conserve les fichiers de sortie en cas d'erreur.

Par défaut, cette option est désactivée.

/Gl Génère un fichier .LIB.
/Gpd Génère un package de conception uniquement. Valeur par défaut : le package fonctionne à la fois à la conception et à l'exécution.
/Gpr Génère un package d'exécution uniquement. Valeur par défaut : le package fonctionne à la fois à la conception et à l'exécution.
/Gn Ne génère pas de fichiers d'état (désactive la liaison incrémentielle). Les liens ultérieurs prendront autant de temps que le premier. Par défaut, cette option est désactivée.
/GS:string=[EICRWSDKP] Définit les indicateurs de section. Ajoute les indicateurs spécifiés aux indicateurs existants d'une section donnée, mais ne peut pas retirer les indicateurs par défaut d'une section. Indicateurs de section :

E = Exécutable
C = Contient du code
I = Contient des données initialisées
R = Lecture possible de la section
W = Ecriture possible de la section
S = La section est partagée
D = La section peut être supprimée
K = La section ne doit pas être mise en cache
P = La section ne doit pas être paginée

Exemple

 -Gs:.rsrc=W

Ce commutateur rend l'écriture possible dans la section RSRC.

/Gz Calcule la somme de contrôle (checksum) de la cible et insère le résultat dans l'en-tête PE. Utilisé pour les pilotes du mode NT Kernel et les DLL système.

Par défaut, cette option est désactivée.

/H:xxxx Spécifie la taille du tas réservé pour l'application, en hexadécimal ou en décimal. La valeur minimale est 0. Ce commutateur redéfinit le paramètre HEAPSIZE dans un fichier de définition de module.

Valeur par défaut : 1 Mo (0x1000000).

/HC:nnnn Spécifie la taille de validation du tas pour l'application.
/I Spécifie le répertoire des fichiers de sortie intermédiaire. Dirige les fichiers d'état du lieur, mais le fichier de débogage map et les fichiers des symboles de débogage sont enregistrés dans le même répertoire que l'image de sortie, à moins qu'une autre spécification ne soit spécifiée pour le fichier de débogage map.
/j Indique les chemins de recherche des objets.

Exemple

 ILINK32 /jc:\myobjs;.\objs splash ^
      .\common\logo,,,utils logolib

OU

 ILINK64 /jc:\myobjs;.\objs splash ^
      .\common\logo,,,utils logolib

Cette commande indique au lieur de rechercher SPLASH.OBJ d'abord dans le répertoire en cours. S'il n'est pas trouvé, le lieur le recherche ensuite dans le répertoire C:\MYOBJS, puis dans le répertoire .\OBJS. Cependant, le lieur n'utilise pas les chemins de recherche des objets pour trouver le fichier LOGO.OBJ car le chemin d'accès à ce fichier a été donné explicitement.

/L Spécifie le chemin de recherche des bibliothèques si aucun chemin explicite n'a été donné pour le fichier LIB et si le lieur ne peut trouver le fichier LIB dans le répertoire en cours.

Exemple

  ILINK32 /Lc:\mylibs;.\libs splash ^
       .\common\logo,,,utils logolib

OU

 ILINK64 /Lc:\mylibs;.\libs splash ^
     .\common\logo,,,utils logolib

Indique au lieur de rechercher SPLASH.LIB d'abord dans le répertoire en cours. S'il n'est pas trouvé, le lieur le recherche ensuite dans le répertoire C:\MYLIBS, puis dans le répertoire .\LIBS. Cependant, le lieur n'utilise pas les chemins de recherche des bibliothèques pour trouver le fichier LOGO.LIB car un chemin d'accès à ce fichier a été donné explicitement.

/M Inscrit dans le fichier map les identificateurs C++ substantypés, et pas le nom complet.
/m La liste des segments contient une ligne par segment montrant l'adresse de début, la longueur, le nom et la classe du segment. Les symboles publics sont présentés en deux listes, la première liste suit l'ordre alphabétique, la seconde l'ordre croissant des adresses. Les symboles ayant une adresse absolue sont repérés par Abs. Une liste de symboles publics est utile lors du débogage.

De nombreux débogueurs utilisent les symboles publics pour vous permettre de faire référence aux adresses symboliques au cours du débogage.

/q Supprime la bannière de la ligne de commande.
/r Liaison commentée. Par défaut, cette option est désactivée.
/Rr Remplace les ressources.
/S:xxxx Spécifie la taille de réservation de la pile pour l'application.
/Sc:xxxx Spécifie la taille de validation de la pile pour l'application.
/s Produit un fichier map détaillé des segments en ajoutant des détails tels que les informations de groupes et de modules dans le fichier map par défaut produit par le lieur.
/Tpd Cible un fichier DLL Windows 32/64 bits.
/Tpe Cible un fichier EXE Windows 32/64 bits.
/Tpp Génère un package.
/t Affiche le temps écoulé pendant la liaison.
/v Génère un fichier des symboles de débogage.
/w Active tous les avertissements.
/w-dee Désactive l'avertissement :

"Module .EXE construit avec une extension DLL ou BPL."

/w-dpl Désactive l'avertissement :

"Symbole dupliqué dans la bibliothèque."

/w-dup Désactive l'avertissement :

"Symbole dupliqué."

/w-exp Active l'avertissement :

"Tentative d'exportation du symbole non public."

/w-nou Désactive l'avertissement :

"Création d'un package sans unité."

/w-rty Active l'avertissement :

"Impossible d'effectuer une liaison incrémentielle - Liaison complète en cours."

/w-srd Désactive l'avertissement :

"Retirer les relogements d'une DLL peut en altérer le fonctionnement."

/w-snf Désactive l'avertissement :

"Section introuvable."

/w-uld Désactive l'avertissement :

"Impossible de charger la DLL."

/x Supprime la création d'un fichier de débogage map.
(vide) Fichier map par défaut des segments (sans commutateur de lieur).

Par défaut, le lieur génère un fichier map contenant des informations générales sur les segments, notamment :

  • Une liste des segments avec leurs noms.
  • L'adresse de démarrage du programme et l'offset.
  • La classe : CODE, DATA, BSS (non initialisé) ou TLS (Thread Local Storage).
  • Tout avertissement ou message d'erreur produit pendant la liaison.


Fichiers de réponse du lieur

Vous pouvez utiliser des fichiers de réponse avec le lieur en ligne de commande pour spécifier les options du lieur.

Les fichiers de réponse sont des fichiers texte contenant les options et les noms de fichiers du lieur que vous devriez normalement taper sur la ligne de commande. Les fichiers de réponse permettent d'entrer des lignes de commande plus longues que ne l'autorisent la plupart des systèmes d'exploitation et vous évitent de saisir continuellement les mêmes informations. Les fichiers de réponse peuvent contenir les mêmes informations que les fichiers de configuration, mais permettent également d'inclure des noms de fichiers.

Contrairement à la ligne de commande, un fichier de réponse peut s'étendre sur plusieurs lignes. Il suffit de terminer une ligne par le caractère plus (+) pour continuer la commande sur la ligne suivante. Notez que si une ligne se termine par une option utilisant le signe plus (par exemple /v+), ce + n'est pas considéré comme un caractère de continuation de ligne (pour prolonger la ligne, utilisez /v+ +).

Si, à l'intérieur d'un fichier de réponse, vous séparez des composants de la ligne de commande (par exemple des fichiers .OBJ et des fichiers .LIB) en allant à la ligne, vous ne devez pas taper la virgule utilisée pour les séparer sur la ligne de commande.

Par exemple :

/c c0ws+
myprog,myexe +
mymap +
mylib cws

ne contient pas les virgules que vous devriez taper si les informations étaient toutes sur la même ligne :

ILINK32 /c c0ws myprog,myexe,mymap,mylib cws

OU

ILINK64 /c c0ws myprog,myexe,mymap,mylib cws

Pour utiliser des fichiers de réponse :

  1. Entrez les options de la ligne de commande et les noms des fichiers dans un fichier texte et enregistrez-le. Les fichiers de réponse ont typiquement une extension .RSP.
  2. Tapez :
ILINK32 @[<chemin>]<RESFILE.RSP>


OU
ILINK64 @[<path>]<RESFILE.RSP>


<RESFILE.RSP> est le nom de votre fichier de réponse.

Vous pouvez spécifier plusieurs fichiers de réponse, comme suit :

ilink32 /c @listobjs.rsp,myexe,mymap,@listlibs.rsp

OU

ilink64 /c @listobjs.rsp,myexe,mymap,@listlibs.rsp
Remarque : Vous pouvez ajouter des commentaires aux fichiers de réponse en utilisant des points-virgules ; le lieur ignore tout texte situé sur une ligne après un point-virgule.


Eléments de la ligne de commande

Le lieur peut aussi utiliser un fichier de configuration nommé ILINK32.CFG ou ILINK64.CFG contenant les options que vous devriez généralement taper sur la ligne de commande.

Elément Description Plate-forme
ILINK32 ILINK64
[@<respfile>] Un fichier de réponse est un fichier texte contenant les options et les noms de fichiers du lieur que vous devriez normalement taper sur la ligne de commande. En plaçant les options et les noms de fichiers dans un fichier de réponse, vous évitez de les saisir à chaque fois que vous liez une application.
Checkmark.svg
<options> Options du lieur qui contrôlent le fonctionnement du lieur. Ces options indiquent, par exemple, s'il faut produire un fichier .EXE, .BPL ou .DLL. Elles doivent être précédées d'une barre oblique (/) ou d'un tiret (-).
Checkmark.svg
Checkmark.svg
<startup> Un module d'initialisation pour fichiers exécutables ou DLL, qui s'occupe du classement des divers segments du programme. Si le module d'initialisation n'est pas correctement lié, vous obtiendrez une longue liste de messages d'erreur vous indiquant que certains identificateurs n'ont pas été résolus ou qu'aucune pile n'a été créée.
Checkmark.svg
Checkmark.svg
<myobjs> Les fichiers .OBJ que vous voulez lier. Spécifiez le chemin si les fichiers ne sont pas dans le répertoire en cours. (Le lieur ajoute une extension .OBJ si aucune extension n'est présente.) C'est également dans cette section que vous placez les bibliothèques d'importation pour les packages Delphi (.bpi).
Checkmark.svg
<objfiles> Les fichiers objet (fichiers .o) que vous voulez lier. Spécifiez le chemin si les fichiers ne sont pas dans le répertoire en cours. (Le lieur ajoute une extension .O si aucune extension n'est présente.)
Checkmark.svg
<exefile> Le nom à donner au fichier exécutable (.EXE, .BPL ou .DLL). Si vous ne spécifiez pas de nom de fichier exécutable, ILINK32 crée le nom de l'exécutable en ajoutant .EXE, .BPL ou .DLL au nom du premier fichier objet énuméré. (Le lieur assume ou ajoute l'extension .EXE pour les fichiers exécutables si aucune extension n'est présente. Il ajoute également l'extension .DLL pour les bibliothèques de liaison dynamique si aucune extension n'est présente. De même, le lieur ajoute l'extension .BPL pour les fichiers package si aucune extension n'est présente.
Checkmark.svg
Checkmark.svg
<mapfile> Le nom à donner au fichier map. Si vous ne spécifiez pas de nom, le nom du fichier map est le même que le fichier .EXE (mais avec l'extension .MAP). (Le lieur ajoute l'extension .MAP si vous ne spécifiez pas d'extension.)
Checkmark.svg
Checkmark.svg
<libraries> Les fichiers bibliothèque à inclure au moment de la liaison. N'utilisez pas de virgule pour séparer les bibliothèques énumérées. Si un fichier n'est pas dans le répertoire en cours ni dans le chemin de recherche (voir l'option /L), vous devez inclure le chemin dans l'instruction de liaison. (Le lieur ajoute l'extension .LIB si aucune extension n'est présente.) L'ordre dans lequel vous énumérez les bibliothèques est très important ; assurez-vous d'utiliser l'ordre défini dans cette liste :
  1. Bibliothèques CodeGuard (si nécessaire).
  2. Vos propres bibliothèques utilisateur (notez que si une fonction est définie plusieurs fois, le lieur utilise la première définition rencontrée).
  3. MPORT32.LIB ou IMPORT64.LIB (si vous créez un exécutable qui utilise l'API Windows).
  4. Bibliothèques Math
  5. Bibliothèques d'exécution.
Checkmark.svg
<libfiles> Les fichiers bibliothèque (fichiers .a) à inclure au moment de la liaison. N'utilisez pas de virgule pour séparer les bibliothèques énumérées. Si un fichier n'est pas dans le répertoire en cours ni dans le chemin de recherche (voir l'option /L), vous devez inclure le chemin dans l'instruction de liaison. (Le lieur ajoute l'extension .LIB si aucune extension n'est présente.) L'ordre dans lequel vous énumérez les bibliothèques est très important ; assurez-vous d'utiliser l'ordre défini dans cette liste :
  1. Vos propres bibliothèques utilisateur (notez que si une fonction est définie plusieurs fois, le lieur utilise la première définition rencontrée).
  2. import64.a (si vous créez un exécutable qui utilise l'API Windows).
  3. Bibliothèques Math
  4. Bibliothèques d'exécution.
Checkmark.svg
<deffile> Le fichier de définition de module pour un exécutable Windows. Si vous ne spécifiez pas un fichier de définition de module (.DEF) alors que vous avez utilisé l'option /Twd ou /Twe, le lieur crée une application basée sur les paramètres par défaut. (Le lieur ajoute l'extension .DEF si aucune extension n'est présente.)
Checkmark.svg
Checkmark.svg
<resfiles> Une liste de fichiers .RES (fichiers ressource compilés) à lier à l'exécutable. (Le lieur ajoute une extension .RES si aucune extension n'est présente.)
Checkmark.svg
Checkmark.svg


Aide de la ligne de commande

Pour afficher l'aide de la ligne de commande de ILINK32, entrez :

ilink32

Pour afficher l'aide de la ligne de commande de ILINK64, entrez :

ilink64

L'écran suivant apparaît :

Turbo Incremental Link 6.40 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.
Syntax: ILINK objfiles, exefile, mapfile, libfiles, deffile, resfiles
@xxxx indicates use response file xxxx
General Options:                       -Af:nnnn Specify file alignment
 -C       Clear state before linking   -Ao:nnnn Specify object alignment
 -wxxx    Warning control              -ax      Specify application type
 -Enn     Max number of errors         -b:xxxx  Specify image base addr
 -r       Verbose linking              -Txx     Specify output file type
 -q       Suppress banner              -H:xxxx  Specify heap reserve size
 -c       Case sensitive linking       -Hc:xxxx Specify heap commit size
 -v       Full debug information       -S:xxxx  Specify stack reserve size
 -Gn      No state files               -Sc:xxxx Specify stack commit size
 -Gi      Generate import library      -Vd.d    Specify Windows version
 -GD      Generate .DRC file           -Dstring Set image description
Map File Control:                      -Vd.d    Specify subsystem version
 -M       Map with mangled names       -Ud.d    Specify image user version
 -m       Map file with publics        -GC      Specify image comment str
 -s       Detailed segment map         -GF      Set image flags
 -x       No map                       -Gl      Static package
Paths:                                 -Gpd     Design time only package
 -I       Intermediate output dir      -Gpr     Runtime only package
 -L       Specify library search paths -GS      Set section flags
 -j       Specify object search paths  -Gt      Fast TLS
Image Control:                         -Gz      Do image checksum
 -d       Delay load a .DLL            -Rr      Replace resources

ILINK32

Utilisation de ILINK32 avec BCC32.EXE

Vous pouvez passer des options et des fichiers à ILINK32 par le biais du compilateur en ligne de commande (BCC32.EXE) en tapant les noms de fichiers sur la ligne de commande avec les extensions explicites .OBJ et .LIB. Par exemple, la commande suivante :

BCC32 mainfile.obj sub1.obj mylib.lib

relie MAINFILE.OBJ, SUB1.OBJ et MYLIB.LIB pour produire l'exécutable MAINFILE.EXE.

Pour transmettre des options au lieur pour BCC32.EXE, vous pouvez utiliser -l. Par exemple, -ls transmet -s au lieur. Cela fonctionne aussi avec BCC32C.EXE.

Remarque : Par défaut, BCC32 démarre ILINK32 avec les fichiers C0W32.OBJ, CW32.LIB et IMPORT32.LIB (module d'initialisation, bibliothèque d'exécution et bibliothèque d'importation Windows). En outre, les compilateurs Delphi et C++ passent toujours aux lieurs l'option /c (liaison sensible à la casse).

Rubriques

Voir aussi