Project Builder et librairies

Didier Guillion

Membre expert
Club iGen
20 Juillet 2001
3 244
164
61
Toulouse
www.myriad-online.com
Bonjour,

J'ai compilé la dernière version de libcurl et je me retrouve avec deux fichiers d'environ 1Mo :
libcurl.a
libcurl.2.0.2.dylib

Avec l'un ou l'autre, mon projet, qui utilise libcurl, ne prends pas un Ko, bien que les appels aux fonctions marchent ...
Cela m'inquiete, car je craint que les librairies ne soient pas incluse dans mon executable mais fasse seulement référence a du code externe.
Si c'est vrai, on peut supposer que mon appli ne fonctionnera que sur mon poste, ce qui n'est pas le but recherché.

Quelqu'un aurait il des explications a me donner sur les librairies de ce type ?

Cordialement
 
J'ai eu l'occasion de travailler avec des .a, c'était une librairie Apple qui tournait dans l'environnement noyau et qui convertissait des sons (24->32Bits, ré-échantillonage, etc.). A priori, quand tu fais une appli et que tu inclues une librairie (.a), le code se met dans l'éxécutable.
Normalement, si tu as correctement ajouté la librairie en question dans ton projet, elle devrait être insérée dans l'exécutable même et non dans le package.

Tu devrais tester ton soft sur une autre machine mais a priori, il ne devrait pas y avoir de problème, les .a sont bien intégrés dans l'éxécutable et non en externe.

C'est bizare ton histoire de poids qui ne change pas quand tu ajoutes la librairie. Méfie toi de la taille indiquée par le système, mais ça, tu dois déjà le savoir.
 
Merci de ta réponse,

J'ai testé sur une autre systeme, et en effet avec le .a , le programme ne se lance meme pas.

Je soupconne que cela provient des options du Makefile fourni avec LibCurl qui ne doit pas etre correct.

J'ai contourné le probleme en incluant les sources de la librairie dans mon projet (je sais, beurk) et la ca marche nickel.

Cordialement
 
Tu peux linker ton application avec la dylib, étant une librairie partagée, si tu lances ton application sur une autre machine qui n'a pas cette librairie, ca ne marchera pas.

Si tu compiles ton application en utilisant la libcurl.a, elle sera présente dedans (compilation statique). Ton application fonctionnera sur toutes les machines.

J'espère avoir été assez clair.

Thierry
iconless.com