[Problème] Static linking dans un makefile

Static linking dans un makefile [Problème] - C - Programmation

Marsh Posté le 30-08-2008 à 00:22:59    

Salut,

 

J'ai compilé XviD sous windows via MSys (émulateur de shell linux), tout s'est bien passé, j'ai obtenu :
- xvidcore.a    (librairie de liens statiques j'imagine)
- xvidcore.dll.a (librairie de liens dynamiques, donc...)
- xvidcore.dll (exécutable dynamique)

 

Après cela je souhaite compiler REVEL (layer open source pour encoder en XviD en un minimum d'appel).
Ce que je souhaite, c'est généré une librairie statique de REVEL, contenant le code statique de REVEL mais aussi celui de XviD.
Pour cela, il faut que REVEL soit linké en static, donc.
Pourtant, j'ai beau cherché et essaé des trucs, il me génère constamment une bibliothèque dynamique.

 

Dans le makefile de REVEL, je ne retrouve la référence à xvidcore que sous la forme -lxvidcore, c'es tà dire sous l'a forme d'une librairie à utiliser pour le linkage.
Après avoir compilé XVID, j'ai bien vérifié que les seuls éléments présents dans mon système étaient xvidcore.a, c'est à dire la version statique de xvidcore (ce fichier fait 500 Ko, contre 7 ko pour xvidcore.dll.a, ce qui me conforte dans l'idée que c'est bien la version statique).

 

Pourtant, lorsque je compile mon programme en appelant revel.a pour le linkage, il me sort des undefined reference sur des fonctions du package xvidcore.
Pourquoi ? lol

 

J'ai même fait le test de cleaner ma compil xvid, cad de tout virer, plus une trace de librairie xvid ni quoi que ce soit. Et là, stupéfait, la compil de REVEL se fait correctement...pourtant il devrait avoir besoin de xvidcore.a (cf makefile).

 

J'avoue que je n'ai aucune idée de comment fonctionne un makefile, j'ai lu brièvement quelques tutoriaux, mais ça m'a paru bien compliqué. Donc là je désespère lol

 

Si quelqu'un à la réponse à mon problème, je le remercie d'avance !!


Message édité par Vel-Ryphon le 30-08-2008 à 00:25:18

---------------
http://www.ryphon-mechanics.com
Reply

Marsh Posté le 30-08-2008 à 00:22:59   

Reply

Marsh Posté le 30-08-2008 à 14:32:58    

C'est bon j'ai résolu mon problème, il provenait de l'autre de déclaration des lib à utiliser -_-.
 
Au lieu de :
-lxvidcore
-lrevel
 
 
Il fallait :
-lxvidcore
-lrevel
 
Allez savoir pourquoi, ça me paraissait plus logique d'appeler d'abord xvidcore.a, puisque revel en dépend...


---------------
http://www.ryphon-mechanics.com
Reply

Sujets relatifs:

Leave a Replay

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