Libraries statiques et dynamiques

Libraries statiques et dynamiques - C - Programmation

Marsh Posté le 22-03-2007 à 16:41:21    

bonjour,

 


j'ai une question sur les libraries statiques et dynamiques. Pourquoi quand on réinstalle une programme on utilise des libraries statiques, -lquelquechose, et pourquoi on est aussi obligé de charger les librairies dynamiques dans le .cshrc (ou autre) ...pourquoi faire les deux ??? Par exemple moi j'ai réinstallé GSL, je compile un truc qui compile avec la nouvelle librarie. Et quand j'execute il me met un "system lookup error". Quand je réindiques les libraries dans le .cshrc, ca marche...quelqu'un pourrait-il m'eclairer ?

 


merci par avance


Message édité par in_your_phion le 22-03-2007 à 16:44:25
Reply

Marsh Posté le 22-03-2007 à 16:41:21   

Reply

Marsh Posté le 22-03-2007 à 16:49:59    

c'est du linux ?


---------------
Töp of the plöp
Reply

Marsh Posté le 22-03-2007 à 17:04:00    

Bon déjà, parce qu'il s'agit d'une erreur qui m'insupporte :
 
Anglais => Français
Library => Bibliothèque
Bookshop => Librairie
 
Maintenant que ça c'est fait, j'imagine que lorsque tu dis "réindiquer" machin, tu parles de la variable d'environnement LD_LIBRARY_PATH.
Eh bien oui : lorsque tu utilises des bibliothèques dynamiques, tu dois indiquer où elles se trouvent. Le système c'est pas madame Irma, si tu ne le lui dit pas, il ne va pas le deviner (il pourrait mais ça serait très pourri).
 
Sous Windows c'est pareil : si tes DLL ne sont pas dans les bons répertoires (celui du binaire, ceux du système ou dans un endroit indiqué dans le code), jamais ton programme ne les trouvera.
 
Ensuite, l'intérêt d'utiliser une bibliothèque dynamique est évident : je développe une bibliothèque qui est utilisée par 10 programmes.
Je découvre un bug : je corrige la bibliothèque, je la compile, et je remplace l'ancien fichier par le nouveau => mes dix programmes voient le bug corrigé, en même temps.

Reply

Marsh Posté le 22-03-2007 à 17:09:10    

et à vue de nez, -lTaLib c'est de la compilation, pas de l'installation.


---------------
Töp of the plöp
Reply

Marsh Posté le 23-03-2007 à 10:39:00    

d'accord merci pour ta réponse sur les librairies bibliothèques. Cela dit une librairie de fonctions je vois pas l'abus de langage
définition du dico :

 

LIBRAIRIE, subst. fém.
A. HIST. ou littér. Bibliothèque; lieu où elle se trouve; collection de livres.

 

(en outre dans le dictionnaire des synonymes les deux définitions pointent chacune vers l'autre.)

 

enfin ....

 


Citation :


Maintenant que ça c'est fait, j'imagine que lorsque tu dis "réindiquer" machin, tu parles de la variable d'environnement LD_LIBRARY_PATH.

 

oui c'est ça

 
Citation :


Ensuite, l'intérêt d'utiliser une bibliothèque dynamique est évident : je développe une bibliothèque qui est utilisée par 10 programmes.
Je découvre un bug : je corrige la bibliothèque, je la compile, et je remplace l'ancien fichier par le nouveau => mes dix programmes voient le bug corrigé, en même temps.

 

ok, ce que je ne comprend pas c'est pourquoi j'ai besoin d'avoir les deux ? Ma bib GSL quand j'écris un programme je dis où sont les .h et la bibliothèque statique, mais je dois aussi préciser où se trouve les bibliothèques dynamiques dans le .cshrc et la variable LD_LIBRARY_PATH. Pourquoi les deux et pas tout dans l'un (que des bibliothèques statiques) ou dans l'autre (que des bibliothèques dynamiques) alors ?

 

merci

 

Message cité 2 fois
Message édité par in_your_phion le 23-03-2007 à 12:48:15
Reply

Marsh Posté le 23-03-2007 à 14:19:41    

in_your_phion a écrit :

d'accord merci pour ta réponse sur les librairies bibliothèques. Cela dit une librairie de fonctions je vois pas l'abus de langage
définition du dico :

 

LIBRAIRIE, subst. fém.
A. HIST. ou littér. Bibliothèque; lieu où elle se trouve; collection de livres.

 

(en outre dans le dictionnaire des synonymes les deux définitions pointent chacune vers l'autre.)

 


 

Dictionnaire de l'Académie (8ème édition)

 

BIBLIOTHÈQUE.  n. f. Lieu où l'on tient un grand nombre de livres rangés en ordre.<...>

 

LIBRAIRIE.  n. f. <...>

 

Il se dit aussi d'une Maison où l'on fait le commerce des livres, d'un magasin, d'une boutique où l'on vend des livres. <...>

 

Il signifiait autrefois Bibliothèque. La librairie du roi. La librairie de Montaigne. Cette acception s'est conservée longtemps dans les actes publics.

 

Donc, attention à ne pas raconter de bêtises... La confusion librairie/bibliothèque est du français ancien. Il n'a pas à être faite de nos jours par méconnaissance du franglais....

 


Message édité par Emmanuel Delahaye le 23-03-2007 à 14:20:49

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-03-2007 à 14:24:54    

in_your_phion a écrit :

ok, ce que je ne comprend pas c'est pourquoi j'ai besoin d'avoir les deux ? Ma bib GSL quand j'écris un programme je dis où sont les .h et la bibliothèque statique, mais je dois aussi préciser où se trouve les bibliothèques dynamiques dans le .cshrc et la variable LD_LIBRARY_PATH. Pourquoi les deux et pas tout dans l'un (que des bibliothèques statiques) ou dans l'autre (que des bibliothèques dynamiques) alors ?


Il est extrêmement courant que l'usage d'une bibliothèque dynamique soit simplifié par un petite (vérifier la taille) bibliothèque statique qui réalise des opérations élémentaires comme :

 

- charger la bibliothèque dynamique
- mettre à jour les pointeurs de fonctions de la DLL
- appeler les fonctions de la DLL via une surcouche en C
- fournir une interface C aux applications

 

exemple :

 

http://delahaye.emmanuel.free.fr/clib/pio/

Message cité 1 fois
Message édité par Emmanuel Delahaye le 23-03-2007 à 14:25:22

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 23-03-2007 à 14:38:44    

Elmoricq a écrit :

Ensuite, l'intérêt d'utiliser une bibliothèque dynamique est évident : je développe une bibliothèque qui est utilisée par 10 programmes.
Je découvre un bug : je corrige la bibliothèque, je la compile, et je remplace l'ancien fichier par le nouveau => mes dix programmes voient le bug corrigé, en même temps.


Le revers de la médaille, c'est que des fois, tu corriges un des programme et tu fais planter les 9 autres qui se complaisaient avec le bug ;)

Reply

Marsh Posté le 23-03-2007 à 16:05:19    

Emmanuel Delahaye a écrit :

Il est extrêmement courant que l'usage d'une bibliothèque dynamique soit simplifié par un petite (vérifier la taille) bibliothèque statique qui réalise des opérations élémentaires comme :

 

- charger la bibliothèque dynamique
- mettre à jour les pointeurs de fonctions de la DLL
- appeler les fonctions de la DLL via une surcouche en C
- fournir une interface C aux applications

 

exemple :

 

http://delahaye.emmanuel.free.fr/clib/pio/

 

merci pour ta réponse. Dans mon cas ce n'est pas une petite bibliothèque statique, c'est ce que je ne comprend pas. C'est une bibliothèque de maths, GSL, et toutes les fonctions sont inclues dans la bibliothèque statique. D'ailleurs je ne comprend pas a quoi sert la librarie dynamique (dans ce cas précis) ...  :sweat:

 

sinon pour librairie/bibliothèque, moui, enfin c'est pinailler pour peu de choses au final je trouve car le C c'est tout en anglais de  toute façon ... enfin apparement on avait compris que je voulais dire bibliothèque, ca ne prête pas à confusion c'est l'essentiel  :ange:


Message édité par in_your_phion le 23-03-2007 à 16:08:05
Reply

Sujets relatifs:

Leave a Replay

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