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

GTK+ Discussion :

Taille de l'executable entre 2 versions !


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Par défaut Taille de l'executable entre 2 versions !
    Bonjour, je suis passé d'une version de debian 3.1 sarge, anjuta 1.2.2 et glade 2.6.8 à un debian 4
    Etch stable, anjuta 1.2.4a et glade 2.12.1.
    Lors de la compilation de mon projet, l'executable est passé de 3 Mo à 160 Ko !
    et je ne trouve pas comment faire pour inclure toutes les librairies de mon projet dans l'executable, car je crois que s'est ça le problème ?

    Pouvez-vous m'aider ?

    Merci.

    Jfcocu

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Pourquoi il y a un problème ? Ton programme ne fonctionne plus ?

    C'est peux être parce qu'une des bibliothèques était liée statiquement et maintenant il existe une version dynamique

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 13
    Par défaut
    Bonjour, le problème est que ce programme doit tourner sur d'autre pc et donc qu'il doit englober statiquement les librairies que j'utilise.
    Mais comment faire ?

    Merci

    jfcocu

  4. #4
    Membre éprouvé Avatar de gandalfar
    Inscrit en
    Novembre 2004
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 145
    Par défaut
    c est au niveau de la compilation et du linkage ; il faut que tu link tes libs en statique et pas en dynamique, donc que tu utilise des .a et pas des .so

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par gandalfar
    c est au niveau de la compilation et du linkage ; il faut que tu link tes libs en statique et pas en dynamique, donc que tu utilise des .a et pas des .so
    Je vais peut-être dire une ânerie, sachant que je n'ai jamais réussi à compiler un programme utilisant GTK+ en statique, mais normalement tu passe au compilateur uniquement le nom de la bibliothèque et pas le nom du fichier complet :
    Après gcc détermine qu'il s'agit du fichier libgtk-2.0.so ou libgtk-2.0.a. .Je crois qu'il favorise la compilation dynamique si les deux fichiers existent mais tu peux forcer la compilation statique avec l'option
    A confirmer tout de même

    [edit]
    J'ai bien appris ma leçon : man gcc

    -lbibliothèque
    -l bibliothèque
    Rechercher la bibliothèque nommée bibliothèque lors de l'édition des liens. (La seconde alternative avec la bibliothèque spécifiée comme argument séparé n'est destinée qu'à la conformité POSIX et n'est pas recommandée.)
    L'ordre d'écriture de cette option dans la ligne de commandes est important ; l'éditeur de liens recherche et traite les bibliothèques et les fichiers objets dans l'ordre dans lequel ils sont spécifiés. Donc, foo.o -lz bar.o recherche la bibliothèque z après le fichier foo.o mais avant bar.o. Si bar.o se réfère à des fonctions de z, ces fonctions ne peuvent être chargées.
    L'éditeur de liens recherche la bibliothèque dans une liste standard de répertoires, bibliothèque qui est en fait un fichier s'appelant libbibliothèque.a. L'éditeur de liens utilise ensuite ce fichier comme s'il avait été spécifié précisément par son nom.
    Les répertoires de recherche incluent divers répertoires standard du système, plus tous ceux que vous avez spécifiés avec -L.
    Normalement, les fichiers trouvés de cette façon sont des fichiers de bibliothèque -- fichiers archives dont les membres sont des fichiers objets. L'éditeur de liens manipule un fichier archive en l'examinant pour trouver les membres qui ont déjà été référencés mais pas encore définis. Néanmoins, si l'éditeur de liens trouve un fichier objet ordinaire au lieu d'une bibliothèque, le fichier objet est lié de la façon habituelle. La seule différence entre utiliser une option -l et spécifier un nom de fichier est que -l entoure bibliothèque avec lib et .a et cherche dans plusieurs répertoires.
    -static
    Sur les systèmes supportant l'édition des liens dynamique, ceci empêche d'effectuer une édition de liens en utilisant des bibliothèques partagées. Sur les autres systèmes, cette option n'a aucun effet.
    [/edit]

  6. #6
    Membre éprouvé Avatar de gandalfar
    Inscrit en
    Novembre 2004
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 145
    Par défaut
    je pense que tu ne dis pas d'anerie, excuse moi j avais repondu un peu vite

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

Discussions similaires

  1. Optimiser taille d'un executable
    Par ced00 dans le forum Delphi
    Réponses: 17
    Dernier message: 07/10/2006, 09h07
  2. Réponses: 5
    Dernier message: 23/10/2005, 11h47
  3. Taille de l'executable ENORME !!!
    Par kase74 dans le forum EDI
    Réponses: 12
    Dernier message: 21/10/2005, 19h28
  4. [DOM] Problème entre différentes versions de java
    Par scorpiwolf dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 17/03/2005, 11h40
  5. Réponses: 7
    Dernier message: 04/03/2004, 13h32

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