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

Administration système Discussion :

bibliotheque .a ou .so


Sujet :

Administration système

  1. #1
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut bibliotheque .a ou .so
    Bonjour,


    J'ai un projet dont le but est de faire une bibliotheque de fonction manipulant n'importe quel ensemble mathématique. Bref en gros j'ai:

    fichier.h
    fichier.c qui contient l'implémentation de mes fonctions
    main. c (plusieurs main en fait) permettant de tester ma bliotheque.

    On me demande de réaliser un bibliothèque au sens linux du terme .a ou .so...

    Or moi je ne sais pas comment faire avec la description des différents fichiers décrits ci-dessus. Comment créer un .a ou .so (sachant que je ne sais pas trop de que c'est même après recherche).

    Merci d'avance
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  2. #2
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    il semblerait que l'extension ne serve que d'indication.
    comme on a les .dll sous Windows, on a les .so sous linux qui sont les librairies dynamiques (et donc qu'on peut charger à la volée). et pour les créer, plutot qu'un exe, il suffit de mettre le flag -c au compilateur.
    (pour le a, il s'agit d'une librairie statique et là je sais pas trop ce que c'est la définition dit que la lib est chargé au moment du link, à l'inverse des shared qui sont utilisées par plusieurs programmes. pas très clair tout ca )

    p-e ce lien pourrait-il t'aider:
    http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

    il parle de gcc donc ce sera p-e à adapter à ton compilateur

  3. #3
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    merci je sais lire ce qu'il y a sur google...


    et non le flag -c à la compilation n'a pas ce résultat. Je cherche justement quelle est la commande à saisir. Pour le moment j'ai mon .h mes .c puis mes .o pour mon exe.


    Mais il me faut des .a ou .so


    Je vais regarder le lien apparement il y a un exemple.merci

    Citation Envoyé par Louis-Guillaume Morand Voir le message
    il semblerait que l'extension ne serve que d'indication.
    comme on a les .dll sous Windows, on a les .so sous linux qui sont les librairies dynamiques. et pour les créer, plutot qu'un exe, il suffit de mettre le flag -c au compilateur.

    p-e ce lien pourra p-e t'aider:
    http://www.adp-gmbh.ch/cpp/gcc/create_lib.html

    il parle de gcc donc ce sera p-e à adapter à ton compilateur
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  4. #4
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    d'après le lien,
    "-c" permet d'obtenir des .o
    puis la commande "ar" permet de transformer le .o en .a

    ar rcs nom_final.a fichier.o

  5. #5
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    La commande marche j'ai bien un .a ...mais si quelqu'un pouvait m'expliquer qu'elle en est l'utilité alors que j'ai mon .h mes .c et mes fichiers tests qui tournent..pourquoi on me demande un .a ou .so a quoi ca sert??
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  6. #6
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Par défaut
    et c'est juste pour créer une librairie externe. Ensuite pour montrer quelle marche, il faut créer un programme avec juste une méthode main qui charge le fichier .so puis qui appelle les méthodes de .so


    pour le .so
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -o GenExt2FS.so -shared GenExt2FS.o -lgcc
    ou alors le paramètre "-fPIC" à la place -lgcc si ca plante

  7. #7
    Membre chevronné Avatar de Pilru
    Homme Profil pro
    Dev ASP.NET/jQuery ; Admin ORACLE
    Inscrit en
    Septembre 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev ASP.NET/jQuery ; Admin ORACLE

    Informations forums :
    Inscription : Septembre 2007
    Messages : 491
    Par défaut
    .so = bibliothèque partagé (shares object).
    .a = bibliothèque statiques

    On te demande de faire une bibliothèque, qui servira pour d'autres programmes.

  8. #8
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Un exemple simple de blibliothèque statique :
    http://www.cmi.univ-mrs.fr/~contensi...n=env&page=bib
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  9. #9
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Par défaut
    tu as souvent deux facons de déployer une application.

    Soit en utilisant les librairies dynamiques : Tout programme peut se lier dessus. L'appli se lie aux librairies existantes et rajoutent les siennes.

    Soit en utilisant une librairie statique : dans ce cas, l'appli est souvent déployé dans un répertoire unique avec librairie, programme...etc

  10. #10
    Rédactrice

    Avatar de Fleur-Anne.Blain
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 636
    Par défaut
    Merci à tous ceux qui m'ont répondu et éclairé je vais avancer avec ce que vous m'avez précisé
    la culture c'est comme la confiture moins on en a plus on l'étale.

    Mes tutos

  11. #11
    Membre chevronné Avatar de toomsounet
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    481
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 481
    Par défaut
    Si jamais tu dois utiliser une lib dynamique, tu pourrais regarder du côté de la librairie dl http://tldp.org/HOWTO/Program-Librar...libraries.html

    Ca permet de pouvoir invoquer des fonctions qui se trouvent dans un .so

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

Discussions similaires

  1. [Tomcat]problème jsp et bdd, bibliotheque virtuelle
    Par drapier dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 09/01/2005, 11h54
  2. Réponses: 2
    Dernier message: 03/12/2004, 22h37
  3. Bibliothèques et Python
    Par Zorro dans le forum Général Python
    Réponses: 3
    Dernier message: 06/10/2004, 22h49
  4. bibliotheques graphiques et devc++
    Par bellepatte dans le forum C
    Réponses: 2
    Dernier message: 18/10/2003, 14h32
  5. [Kylix] bibliotheque libtwin32.so
    Par mic006 dans le forum EDI
    Réponses: 1
    Dernier message: 08/05/2002, 02h36

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