IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Expat : compilation et utilisation (UNIX)


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut Expat : compilation et utilisation (UNIX)
    Bonjour,
    Ayant besoin de parser du XML dans une application embarquée, j'ai téléchargé les sources de expat.

    De façon bête et méchante, je lance le script de config, puis un make.

    De là, 2 répertoires sont créés :

    /.libs
    - libexpat.a
    - libexpat.so
    /lib/.libs
    - xmlparse.o
    - xmlrole.o
    - xmltok.o

    Quelles sont les utilisations possibles ?
    Les fichiers *.o sont les fichiers temporaires ou ils peuvent être intégrés dans une application ?

    Y-a-t-il un fichier .h à intégrer à mon application ?

    Si je ne me trompe pas, *.a est une librairie statique (intégrée dans l'application), et *.so est une librairie partagée (chargé lors de l'utilisation)

    Merci pour vos remarques.

    Nicolas
    Strasbourg

  2. #2
    Membre émérite
    Avatar de Pouic
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 669
    Par défaut
    Citation Envoyé par Nico_stras Voir le message
    Les fichiers *.o sont les fichiers temporaires ou ils peuvent être intégrés dans une application ?
    Non, on s'en fout.
    Y-a-t-il un fichier .h à intégrer à mon application ?
    Oui, expat.h. Il y des exemples dans le tarball que tu récupères...
    Si je ne me trompe pas, *.a est une librairie statique (intégrée dans l'application), et *.so est une librairie partagée (chargé lors de l'utilisation)
    Oui.
    Software becomes slower faster than hardware becomes faster
    [size=1]
    http://xrenault.developpez.com

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 200
    Par défaut
    Citation Envoyé par Nico_stras Voir le message
    Si je ne me trompe pas, *.a est une librairie statique (intégrée dans l'application), et *.so est une librairie partagée (chargé lors de l'utilisation
    Quelle est la meilleure solution ?
    Y-a-t-il des différences en terme de performances ?

    On trouve souvent des librairies en .so ; .so.a ; .so.2 ; ...
    par exemple, fourni avec mon OS :
    libexpat.so
    libexpat.so.1
    libexpat.so.2

    De plus, libexpat.so = libexpat.so.2

    Comment l'OS sait quelle version utiliser ?
    Ce nom est-il dépendant de la version "expat-2.0.1"

  4. #4
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Citation Envoyé par Nico_stras Voir le message
    Quelle est la meilleure solution ?
    Y-a-t-il des différences en terme de performances ?
    Je crois que les bibliothèques partagées sont plus intéressantes en terme de perfs car elles sont chargées une seule fois par le système (c'est le cas de la bibliothèque standard du C) ; voir la commande "ldd" pour connaitre la liste des bibliothèques partagées utilisées par un programme.
    Il y a une baisse de perf par contre si on utilise la bibliothèque comme un plugin en la chargeant manuellement à l'exécution (avec dl()) .

    Utiliser une bibliothèque statique est parfois pratique si on veut lier une version très particulière dans un programme et être sur qu'il n'y aura pas d'effet de bord si on met à jour la bibliothèque partagée ; ceci a l'inconvénient de créer des binaires plus gros et donc plus lourd à charger par le système.

    Pour les so.1, so.2.1.1, etc, ce sont différentes versions de la bibliothèque partagée, en général le .so est un lien symbolique sur une version spécifique

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Nico_stras Voir le message
    De plus, libexpat.so = libexpat.so.2

    Comment l'OS sait quelle version utiliser ?
    En général le linker (ou loader pour les .so) cherche simplement les extensions "défaut" (.so, .a).

    A l'installation de ton package (make install par exemple), on va créer donc ce nom par défaut, mais on le pointe symboliquement sur la bonne version... Comme ça, si tu updates ta bibliothèque, on n'a qu'à re-créer le lien symbolique... et tu as toujours tes 2 versions de biblothèques (et donc tu peux faire des comparaisons)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/12/2009, 14h50
  2. Réponses: 10
    Dernier message: 20/08/2007, 10h47
  3. utiliser unix sous delphi
    Par lassmust dans le forum Delphi
    Réponses: 4
    Dernier message: 01/06/2007, 11h32
  4. Compiler pour utilisation sur Windows
    Par bit_o dans le forum Linux
    Réponses: 3
    Dernier message: 25/04/2007, 21h07
  5. erreur de compile servlet sur unix
    Par roninou dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 10/11/2006, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo