Voila, j'ai un problème ...
J'essaie de compiler une petite application qui est liée a une bibliothèque faite maison (raydium).
En gros, je compile ma lib et ensuite, je crée libraydium.a et libraydium.so.
Un problème c'est que raydium est lui-même lié statiquement à libphp.a et à libode.a. Il faudrait donc que libraydium.a contienne les deux autres bibliothèques.
Comment faire pour inclure le contenu d'une archive .a (ode et php) dans une autre archive .a (raydium) ?
Un autre problème: lorsque je compile un petit exemple et que je le lie à libraydium.so, il ne s'execute pas:
./test: relocation error: ./libraydium.so.0: undefined symbol: raydium_trigo_abs
Si le symbole « raydium_trigo_abs » n'est pas défini c'est simplement que c'est une macro définie (dans le fichier header) par:
#define raydium_trigo_abs(A) ( (A) < (0) ? (-A) : (A) )
Je me demande comment gcc a pu compiler mon fichier test avec cette fonction surtout qu'après la précompilation de mon fichier test, il ne fait nulle-part référance à cette fonction (et c'est normal, les #define ont joué leur role).
mildred@louve:~/Projects/raydium/raytest/raydium_prog $ gcc -E test6b.c -Iphp/ -Iphp/main/ -Iphp/Zend -Iphp/TSRM | grep raydium_trigo_abs
rien du tout
mildred@louve:~/Projects/raydium/raytest/raydium_prog $
C'est normal ?
# Les sources
Posté par Mildred (site web personnel) . Évalué à 1.
Et je compile http://louve.dyndns.org/projets/raydium.dir/raytest/raydium_prog/te(...)
# nulle part
Posté par Mildred (site web personnel) . Évalué à 1.
Pas plus avec strings ./libraydium.so|grep raydium_trigo_abs
Je me demande comment il peut me mettre cette erreur, c'est incompréhensible ...
# Warnings gcc
Posté par Bastien Mourgues . Évalué à 2.
après ça, tu devrais avoir la réponse à ta question .
Plus en détail, manifestement, il doit te manquer un #include <fichier.h>
quelque part, et gcc considère par défaut que raydium_trigo_abs est du type
[^] # Re: Warnings gcc
Posté par Mildred (site web personnel) . Évalué à 1.
D'abord, lors de la précompilation, la fonction n'apparait plus (elle a été remplacée). J'ai vérifié dans mon fichier test et avec tous les fichiers de la lib.
Ensuite, gcc ne m'indique rien allant de ce coté (toutes les compilations avec -Wall).
je ne comprends pas du tout d'ou ca vient. c'est très étrange.
edit: maintenant, je comprends ... je pensait avoir fait un lien symbolique de l'endroit ou je compiel ma lib vers l'endroit ou je compile test.ca mais ce n'était pas le cas.
maintenant ca se lance mais il y a une erreur de segemntation quelquepart ...
on avence
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.