Si j'ai deux fichiers objets définissant à la fois un symbole (fonction) "foobar".Liaison de deux fichiers objet avec un symbole commun
Est-il possible de dire à l'éditeur de liens d'obéir à l'ordre des fichiers obj que je donne dans l'appel de ligne de commande et de toujours prendre le symbole du premier fichier et jamais le dernier? AFAIK le pragma "weak" fonctionne uniquement sur les bibliothèques partagées mais pas sur les fichiers objet. Veuillez répondre pour toutes les combinaisons compilateur/éditeur de liens/système d'exploitation C/C++ que vous connaissez parce que je suis flexibel et que j'utilise beaucoup de compiles (sun studio, intel, msvc, gcc, acc).
Y aura-t toute erreur signalée, le même symbole est défini dans '1.o' et '2.o' (les deux sont dans' libsome.a'), et j'essaye de lier statiquement contre cette bibliothèque? –
@dmak_k: Je n'en ai aucune idée. Pourquoi ferais-tu une telle chose? Deux choses pourraient arriver 1) L'éditeur de liens pourrait trouver les deux définitions et signaler une erreur; 2) Il pourrait résoudre le symbole avec le premier trouvé, dans ce cas, cela dépend de l'ordre dans lequel les fichiers d'objets sont apparus dans la bibliothèque. Dans la plupart des cas, vous voudriez (1) arriver, puisque (2) est ambigu et conduirait à trouver des bogues difficiles à trouver. Vous pourriez bien sûr l'essayer. – Clifford