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 :

Compiler un .cpp pour générer un .so


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 14
    Points : 6
    Points
    6
    Par défaut Compiler un .cpp pour générer un .so
    Bonjour j'ai un petit problème de compilation.

    Je veux compiler sous linux un fichier .cpp pour en avoir en fin un fichier .so

    Pouvez vous m'aider en me spécifiant la démarche à suivre.

  2. #2
    Expert éminent sénior

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 189
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 189
    Points : 17 141
    Points
    17 141
    Par défaut
    La faq répond à ton problème.

    En l'occurence, essaie g++ fichier.cpp -o nom_du_programme -Wall -Wextra -WerrorJe te recommande vivement de lire la faq d'un bout à l'autre.
    Mes principes de bases du codeur qui veut pouvoir dormir:
    • Une variable de moins est une source d'erreur en moins.
    • Un pointeur de moins est une montagne d'erreurs en moins.
    • Un copier-coller, ça doit se justifier... Deux, c'est un de trop.
    • jamais signifie "sauf si j'ai passé trois jours à prouver que je peux".
    • La plus sotte des questions est celle qu'on ne pose pas.
    Pour faire des graphes, essayez yEd.
    le ter nel est le titre porté par un de mes personnages de jeu de rôle

  3. #3
    Membre confirmé

    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2012
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 108
    Points : 573
    Points
    573
    Par défaut
    Mhhh... si je peux me permettre pourquoi (?) veux-tu générer un .so


    Généralement le .so se génère lorsqu'on developpe une bibliotheque.
    Le paradigme de chacun ne dépend pas de lui, mais de son éducation...

    Le mot donne à la pensée son existence la plus haute et la plus noble.
    Spinoza

    Quiconque n'est pas choqué par la théorie quantique ne la comprend pas.
    Niels Bohr

    http://isocpp.org/

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Linunix Voir le message
    Généralement le .so se génère lorsqu'on developpe une bibliotheque.
    Justement, c'est peut être pour développer une bibliothèque (enfin j'espère)
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Membre confirmé

    Homme Profil pro
    Etudiant
    Inscrit en
    Juillet 2012
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2012
    Messages : 108
    Points : 573
    Points
    573
    Par défaut
    Citation Envoyé par ram-0000 Voir le message
    Justement, c'est peut être pour développer une bibliothèque (enfin j'espère)
    En console alors...
    car par exemple sur Qt Creator, pas besoin de savoir comment faire... on a juste a sélectionné "bibliothèque C++" lorsqu'on veut débuter le projet, et quand on veut compiler celui-ci, si il n'y a pas d'erreur, il génère le .so
    Le paradigme de chacun ne dépend pas de lui, mais de son éducation...

    Le mot donne à la pensée son existence la plus haute et la plus noble.
    Spinoza

    Quiconque n'est pas choqué par la théorie quantique ne la comprend pas.
    Niels Bohr

    http://isocpp.org/

  6. #6
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,
    Citation Envoyé par Linunix Voir le message
    En console alors...
    Oui, et alors
    car par exemple sur Qt Creator, pas besoin de savoir comment faire... on a juste a sélectionné "bibliothèque C++" lorsqu'on veut débuter le projet, et quand on veut compiler celui-ci, si il n'y a pas d'erreur, il génère le .so
    Les EDI, quels qu'ils soient, sont effectivement quelque chose de génial pour la gestion de projets.

    Sans balgue: on n'a plus rien à faire: on rajoute comme on veut des fichiers, des dépendances, bref, tout ce qu'on veut et, en plus, ils fournissent l'auto complétion

    Mais bon, le but des bibliothèques, qu'elles soient statique (libxxx.a) sous dynamique (.so / .dll), est, classiquement, de permettre de les intégrer facilement à différents projets.

    Si l'on crée une dépendance envers un EDI particulier pour la compilation, on limite de facto le cadre dans lequel la bibliothèque peut être générée, et donc, utilisée.

    Si on peut envisager de fournir "le nécessaire" pour pouvoir gérer le projet dans un EDI ou un autre, il est quand même largement préférable de faire en sorte que la compilation de la bibliothèque (ou de n'importe quel projet, d'ailleurs) puisse s'effectuer à l'aide d'un système d'automatisation de la compilation (autotools, CMake, Makefiles, ...), surtout si l'on veut fournir la bibliothèque sous la forme opensource
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 1
    Points : 3
    Points
    3
    Par défaut
    Pour générer une bibliothèque dynamique à partir d'un fichier c++, c'est le même principe que pour un fichier c :

    compilation : g++ -c -fPIC mon_fichier.cpp

    liaison : g++ mon_fichier.o -o maLib.so -shared

  8. #8
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par zulu_novembre Voir le message
    Pour générer une bibliothèque dynamique à partir d'un fichier c++, c'est le même principe que pour un fichier c :

    compilation : g++ -c -fPIC mon_fichier.cpp

    liaison : g++ mon_fichier.o -o maLib.so -shared
    Presque. -fPIC ne fait que dire qu'on va générer un fichier relocable. If faut aussi prévenir le code qu'on compile de ce fait, en définissant la macro PIC.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ -fPIC -DPIC -c mon_fichier.cpp -o mon_fichier.o
    D'un point de vue purement théorique, ça ne devrait pas être nécessaire - l'utilisation de -fPIC force la définition des macros __pic__ et __PIC__, ce qui devrait être suffisant. Mais il existe encore beaucoup de code qui se basent dur la macro PIC - il faut donc la définir aussi.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  9. #9
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Ah bon ? Jamais vu un code qui nécessitait -DPIC !

  10. #10
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Citation Envoyé par Matthieu Brucher Voir le message
    Ah bon ? Jamais vu un code qui nécessitait -DPIC !
    C'est ce qu'on appelle de la chance

    gmp 4.3.2, fichier tune/speed.h, ligne 316.

    Pour info, gmp est l'une des composantes majeure de gcc. C'est la librairie bignum de GNU.

    On trouve aussi plusieurs #if defined PIC dans e2fsprogs 1.40.11 (dans intl/relocatable.c).

    En cherchant bien, je devrais pouvoir en trouver d'autres
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  11. #11
    Rédacteur/Modérateur
    Avatar de arnolddumas
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : Autriche

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

    Informations forums :
    Inscription : Novembre 2012
    Messages : 978
    Points : 7 764
    Points
    7 764
    Par défaut
    Tu peux aussi faire ça avec CMake, il y a un tutoriel sur le site : http://florian-goujeon.developpez.co...initiation/#LV

Discussions similaires

  1. pré-compile du .jrxml pour générer du .jaspr
    Par geforce dans le forum Jasper
    Réponses: 5
    Dernier message: 03/08/2012, 08h21
  2. Réponses: 3
    Dernier message: 25/02/2009, 18h09
  3. Réponses: 4
    Dernier message: 07/05/2007, 08h02
  4. Réponses: 10
    Dernier message: 22/09/2003, 21h58

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