Buena note,
Je rencontre un problème étrange avec TCC (s'il y en a qui l'utilise).
Il ne parvient pas à lier avec un librairie généré avec ar, alors qu'il parvient à lier normalement si on lui fourni directemet les fichiers objets.
je donne un exemple simplifié, avec deux fichiers source.
le fichier a.c
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 #include <stdio.h> extern char* text(); int main(void) { printf("\nText: %s\n", text()); return 0; }
le fichier b.c
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 char* text(void) { return "petit bout de texte"; }
Si je fais ensuite
TCC me renvoit le message, "undefined symbol 'text' "
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 tcc -c -o b.o b.c ar -r libtest.a b.o tcc "-I..\include" "-L..\lib" "-L." -ltest a.c
Mais si je fais
alors ça marche.
Code BAT : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 tcc -c -o b.o b.c tcc "-I..\include" "-L..\lib" "-L." b.o a.c
Comment expliquer cela ?
J'ai vérifié le format de la librairie avec objdump, et elle semble Ok. Mais j'ai remarqué tout de même que les librairies fournies d'origine avec TCC contiennent des fichiers objet au format PE, alors que TCC ne produit que du ELF. Et ma librairie est au format ELF.
Mais je serais surpris que TCC exigent que les module dans les librairies soit au format PE... ce serait étrange.
Si quelqu'un a une idée, ou si c'est la manière de créer la librairie qui n'est pas convenable...
Je donne en tous cas un exemple de la librairie en pièce jointe, au cas où quelqu'un(e) y découvre quelque chose qui ne va pas.
Partager