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

Bibliothèques Discussion :

Créer une bibliothèque en incluant une autre


Sujet :

Bibliothèques

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 80
    Points
    80
    Par défaut Créer une bibliothèque en incluant une autre
    Bonjour,

    J'aimerais savoir comment faire pour créer une bibliothèque statique en C++ sous Code::Blocks tout en incluant une autre bibliothèque.

    Pour l'instant j'ai réussi à créer ma bibliothèque librsa.a utilisable avec son entête <rsa.h> associée. Ce qui m'embête c'est que ma bibliothèque utilise la bibliothèque GMP.

    Je doit donc fournir à l'utilisateur les fichiers suivant pour que ça compile :

    gmp.h
    libgmp.a
    rsa.h
    librsa.a

    J'aimerais n'avoir à fournir QUE rsa.h et librsa.a de telle sorte que l'utilisateur n'ait plus qu'à inclure <rsa.h> et à linker -lrsa et rien d'autre pour utiliser ma classe RSA.

    Je voudrais donc savoir comment faire, si possible pour créer un gros librsa.a qui embarque tout.

    Merci.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Sauf erreur de ma part, il n'y a pas de solution toute faite avec Code::Blocks pour créer une bibliothèque statique contenant d'autres bibliothèques statiques. Par contre, tu peux créer une librairie dynamique. Il n'y aura alors plus de référence aux librairies statiques.

    Sinon, une librairie statique, ce n'est rien d'autre qu'une archive de fichiers objets. Tu peux extraire des fichiers, ajouter d'autres fichiers. Par conséquent, tu pourrais jeter un coup d'œil à la ligne de commande ar (dans le dossier bin/ de Code::Blocks ?). Avec l'utilitaire ar, tu pourrais extraire tous les fichiers objets de libgmp.a puis les ajouter à librsa.a, genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ar -xv libgmp.a
    ar -rv librsa.a *.o
    ar -tv librsa.a # pour vérifier le contenu
    Pour gmp.h, il faut t'arranger pour que rsa.h ne l'inclut pas.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 80
    Points
    80
    Par défaut
    Merci aoyou pour tes explications.
    J'ai essayé et ça marche parfaitement.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 74
    Points : 80
    Points
    80
    Par défaut
    Ma bibliothèque fonctionne bien. Elle est compilée pour une architecture 32 bits. J'aimerais savoir comment la recompiler pour générer une version 64 bits.

    J'aimerais également la compiler pour qu'elle sous utilisable sous Linux (32 et 64 bits), comment dois-je m'y prendre ?

    Merci.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    865
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 865
    Points : 1 069
    Points
    1 069
    Par défaut
    Le plus simple est de se mettre sur un OS 64 bits. On doit pouvoir cross-compiler d'un OS 32 bits vers un OS 64 bits mais il faut bien tester, alors autant compiler directement sur 64 bits. La librairie sera générée par défaut en 64 bits. Pour compiler en 32 bits avec gcc sur un Linux 64 bits, il suffit de rajouter l'option -m32 aux flags de compilation.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/02/2015, 10h29
  2. Réponses: 25
    Dernier message: 11/06/2012, 16h39
  3. [Batch] Créer une chaine à partir d'une variable et d'une autre chaine
    Par mlle lain dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 10/11/2009, 16h26
  4. création d'une radio liste incluant une variable
    Par lestathor dans le forum Langage
    Réponses: 1
    Dernier message: 15/05/2007, 19h56
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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