Hi every body :p
J'ai un projet dans lequel j'ai un librairie L, et un fichier objet O, comme éléments externes entrant dans le processus de liaison. La librairie L défini une variable V. Le fichier objet O, est le produit de la compilation d'un code source, qui déclare V comme étant une variable externe tout en l'initialisant.
Le problème est qu'à la liaison avec Gnat, j'ai un message d'erreur me disant que V qui est défini dans O, est aussi défini dans un élément de L.
Pour intégrer O et L au projet, j'utilise la pragma Linker_Options. Gnat est basé sur GCC, et donc sur son LD. J'ai fait des essais en GCC pure, et il n'y a pas de problèmes. Peut-être qu'en compilant avec Gnat, LD ne reçoit pas ses argument dans le bon ordre ? (O doit être normalement passé avant L).
Est-ce qu'il y a un moyen avec Gnat, de forcer l'ordre dans lequel les fichiers objets et librairie externe seront liés ?
Note : je me demande aussi, quand on déclare dans un fichier C, une variable externe, en l'initialisant... est-ce que le compilateur laisse dans le fichier objet, des informations d'initialisation pour la dite-variable qui se trouve dans un autre fichier objet, ou est-ce qu'il cré vraiment une instance supplémentaire de cette variable ? (auquel dernier cas, ce serait vraiment embêtant)
Partager