Le terrible linker ...

Le terrible linker ... - C - Programmation

Marsh Posté le 17-03-2006 à 19:11:04    

Bonjour,
 
Mon problème est assez simple : LD me fait des misères ...
 
En effet, selon l'ordre dans lequel je lui spécifie mes .o/.a il me trouve des symboles qui n'existent pas dans différents fichiers.
 
En gros voilà :
 
- Un petit binaire qui se compile avec deux trois sources, un crt0 modifié, un linkscript modifié et un fichier de specs modifiés. Afin de ne pas obtenir une erreur comme quoi le symbole "end" n'existe pas, je mets ca dans mon Makefile :

{LD} ${LDFLAGS} ${LDLIBS} ${OFILES} -o $@


Et là ca marche
 
- Maintenant pour compliquer tout ca je veux inclure une librairie statique, et là miracle : les symboles qui s'y trouvent sont introuvables ! Je change le Makefile comme ca :

@${LD} ${LDFLAGS} ${OFILES} ${LDLIBS} -o $@


 
Voilà, donc si quelqu'un pouvait m'expliquer comment faire obéir LD et dans quel ordre lui passer les arguments...
Merci d'avance ! :)

Reply

Marsh Posté le 17-03-2006 à 19:11:04   

Reply

Marsh Posté le 17-03-2006 à 21:53:24    

Pourquoi changes tu l'ordre?
Si je raconte pas de bétises, il me semble que l'il faut aller de "gauche à droite". A savoir que si tu inclus des fonctions d'une lib dans un .o, il faut que le .a de la lib se trouve à gauche du .o en question dans la liste des fichiers à linker. (Ou le contraire, je sais plus)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed