2010-05-28 7 views
0

Je compile un programme dans lequel un fichier d'en-tête est défini à plusieurs endroits. Le contenu de chaque fichier d'en-tête est différent, bien que les noms de variables soient les mêmes membres internes dans les structures sont différents.Problème avec la liaison dans gcc

Maintenant au moment de la liaison, il vient d'un fichier de bibliothèque qui appartient à un en-tête différent de celui utilisé lors de la compilation. Pour cette raison, je reçois une erreur au moment de la liaison.

Puisqu'il y a tellement de bibliothèques avec le même nom que je ne sais pas quelle bibliothèque est en train d'être choisie. J'ai beaucoup d'oems et d'autres bibliothèques personnalisées qui font partie de cette construction.

J'ai vérifié les options dans gcc qui parle de la sélection de différents fichiers de bibliothèque à inclure. Mais pas où je suis capable de voir une option qui parle de quelles bibliothèques sont prises en charge l'éditeur de liens.

Si l'éditeur de liens est capable de trouver plus d'un nom de fichier de bibliothèque, alors ce que l'éditeur de liens détecte est quelque chose que je ne suis pas capable de comprendre. Je ne veux pas spécifier de chemin, je veux plutôt comprendre comment l'éditeur de liens résout les multiples bibliothèques qu'il est capable de localiser. J'ai essayé de mettre l'option -v, mais cela ne liste pas le chemin à partir duquel le gcc récupère la bibliothèque. J'utilise gcc sous linux.

Toute aide à cet égard est fortement appréciée.

Cordialement, Chitra

+1

Comment définir un fichier d'en-tête à plusieurs endroits? Voulez-vous dire "inclure"? Quelle erreur obtenez vous? – WhirlWind

+0

Plz ajouter la sortie de l'éditeur de liens, et éventuellement votre makefile. –

Répondre

1

Passant -Wl,-t à gcc dire ld pour vider quels fichiers il est la lecture.

Questions connexes