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 :

Linkage Makefile et optimisation


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 50
    Points
    50
    Par défaut Linkage Makefile et optimisation
    Donc j'utilise pour mes fichier une bibliothèque de fonction qui s'appelle assez betement fonctions_insertions.h et fonctions_insertions.cpp et egalement j'ai besoin de la librairie mysqlpp pour l'interface avec le SGBD mysql. Le probleme c'est que de facto ma librairie mysqlpp est necessaire partout car j'ai besoin de fonctions_insertions.cpp/.h partout.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    all: insertion_madness
     
    insertion_madness:  gsm.o fonctions_insertion.o insertion_madness.o couple.o
    	g++ -O3 gsm.o couple.o fonctions_insertion.o insertion_madness.o -o insertion_madness -I/usr/include/mysql -lmysqlpp
     
    gsm.o: gsm.cpp gsm.h couple.h fonctions_insertion.h
    	g++ -O3 gsm.cpp -c gsm.h couple.h fonctions_insertion.h -I/usr/include/mysql -lmysqlpp
     
    fonctions_insertion.o : fonctions_insertion.cpp fonctions_insertion.h
    	g++ -O3 fonctions_insertion.cpp -c fonctions_insertion.h -I/usr/include/mysql -lmysqlpp
     
    insertion_madness.o: insertion_madness.cpp gsm.h fonctions_insertion.h
    	g++ -O3 insertion_madness.cpp -c gsm.h fonctions_insertion.h couple.h -I/usr/include/mysql -lmysqlpp
     
    couple.o : couple.cpp couple.h
    	g++ -O3 couple.cpp -c couple.h
     
    clean:
    	rm -rf *.o *.gch
     
    mrproper: clean
    	rm -rf separateurs

    Or je sais que je n'ai aps tout compris a la liaison avec les bibliothèque. Déjà que le processus d'installation etait vraiment pas clair la j'ai systematiquement ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ make
    g++ -O3 insertion_madness.cpp -c gsm.h fonctions_insertion.h couple.h -I/usr/include/mysql -lmysqlpp
    g++: -lmysqlpp: fichier d'entrée d'édition de liens n'est pas utilisé parce l'édition de lien n'a pas été faite
    g++ -O3 gsm.o couple.o fonctions_insertion.o insertion_madness.o -o insertion_madness -I/usr/include/mysql -lmysqlpp
    Bon ca n'empêche pas mon code de parfaitement bien marché mais si j'enleve la liaison ca ne marche plus. Donc entre un code qui marche mais qui hurle et un code qui marche pas du tout j'ai choisis d'avancer. Bref qu'est-ce que je ne fais pas bien.

    Autre question. Si je veux que mon code soit portable sur un autre serveur avec le même os mais sans la librairie d'installer je fais comment pour intégrer la librairie a la compilation ? Cela ne risque pas de nuire a la performance avec un exécutable bcp trop gros ? Car je suis actuellement sur un server de test coupé du net mais a terme mon programme migrera sur un serveur tournant avec le meme OS.Et ne pas avoir a reinstaller la librairie est tout de meme plus simple non ?

    D'avance merci !

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    Citation Envoyé par Koemgun Voir le message
    Bon ca n'empêche pas mon code de parfaitement bien marché mais si j'enleve la liaison ca ne marche plus. Donc entre un code qui marche mais qui hurle et un code qui marche pas du tout j'ai choisis d'avancer. Bref qu'est-ce que je ne fais pas bien.
    la lib ne doit être fournie qu'à l'édition de lien, il faut donc retirer -lmysqlpp dans la production des .o et ne l'utiliser que pour faire insertion_madness

    Autre question. Si je veux que mon code soit portable sur un autre serveur avec le même os mais sans la librairie d'installer je fais comment pour intégrer la librairie a la compilation ? Cela ne risque pas de nuire a la performance avec un exécutable bcp trop gros ?

    que la lib soit dynamique ou non elle sera chargée. Cela ne fait pas de vrai difference si vous êtes le seul à l'utiliser, sinon il y aura bien une duplication. Par contre par expérience un code utilisant une lib dynamique est plus lent qu'un code utilisant une lib statique.

    Car je suis actuellement sur un server de test coupé du net mais a terme mon programme migrera sur un serveur tournant avec le meme OS.Et ne pas avoir a reinstaller la librairie est tout de meme plus simple non ?
    de toute façon il faudra bien installer votre prog, devoir installer la lib en plus ne change donc pas grand chose, non ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2010
    Messages : 43
    Points : 50
    Points
    50
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    la lib ne doit être fournie qu'à l'édition de lien, il faut donc retirer -lmysqlpp dans la production des .o et ne l'utiliser que pour faire insertion_madness
    Ah Bah oui je ne dois supprimer que le Linkage -l et pas l'include -I. C'est supprimer l'include qui le fait hurler et planter ^^.




    Citation Envoyé par bruno_pages Voir le message
    que la lib soit dynamique ou non elle sera chargée. Cela ne fait pas de vrai différence si vous êtes le seul à l'utiliser, sinon il y aura bien une duplication. Par contre par expérience un code utilisant une lib dynamique est plus lent qu'un code utilisant une lib statique.

    Citation Envoyé par bruno_pages Voir le message
    de toute façon il faudra bien installer votre prog, devoir installer la lib en plus ne change donc pas grand chose, non ?
    Installer le prog consiste juste a copier l'exécutable sur une autre machine (et le fichier paramètres) Alors que de souvenir installer une bibliothèque est autrement plus complique.

    Donc le mot clé -static suffit a tout inclure ? J'ai pas l'impression ...

Discussions similaires

  1. Optimisation et linkage
    Par GregWar dans le forum C
    Réponses: 6
    Dernier message: 11/12/2009, 23h18
  2. Makefile et linkage
    Par kilopoli dans le forum Eclipse C & C++
    Réponses: 5
    Dernier message: 12/06/2008, 09h12
  3. erreur de linkage dans un makefile
    Par IP-Fix dans le forum Débuter
    Réponses: 2
    Dernier message: 09/04/2008, 11h44
  4. [compilation] Makefile erreur (linkage?)
    Par Valkirion dans le forum C++
    Réponses: 7
    Dernier message: 03/08/2007, 21h24
  5. [langage] Optimiser la lecture d'un fichier
    Par And_the_problem_is dans le forum Langage
    Réponses: 2
    Dernier message: 11/06/2002, 10h24

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