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 :

Probleme excecution programme [Linux]


Sujet :

C

  1. #141
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Ne manquerait-il pas la fonction main() dans ton programme ?

  2. #142
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Par défaut
    si ... ^^

    Mais on est obligé d'avoir un main? Dans le cas ou on compile un .so ? On ne doit pas avoir de main, puisque c'est une librairie de fonction ...

  3. #143
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par nuFox Voir le message
    si ... ^^

    Mais on est obligé d'avoir un main? Dans le cas ou on compile un .so ? On ne doit pas avoir de main, puisque c'est une librairie de fonction ...
    L'erreur intervient ici à l'édition des liens. Si tu compiles un code pour une bibliothèque, tu ne fais pas cette édition des liens (pour laquelle tu dois obligatoirement spécifier une fonction main()). Avec gcc, en supposant que ton projet se compose de fichier1.h fichier1.c, fichier2.h, fichier2.c, tu compiles ta bib à l'aide des commandes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes -fPIC -c fichier1.c
    gcc -Wall -Wextra -O2 -Wwrite-strings -Wstrict-prototypes -fPIC -c fichier2.c
    gcc -shared -Wl,-soname,libmabibliotheque.so.0 -o libmabibliotheque.so.0.0.1 fichier1.c fichier2.c
    Bien entendu, il est plus pratique d'automatiser le processus avec un outils tel que SCons ou make.

    Si tu utilises un EDI tel que Code::Blocks, il te faut créer un projet Bibliothèque partagée pour la bibliothèque.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #144
    Membre émérite Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Par défaut
    Citation Envoyé par nuFox Voir le message
    si ... ^^

    Mais on est obligé d'avoir un main? Dans le cas ou on compile un .so ? On ne doit pas avoir de main, puisque c'est une librairie de fonction ...
    Montres un peu la commande que tu passes pour générer ta librairie....

  5. #145
    Membre éclairé
    Inscrit en
    Février 2008
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 302
    Par défaut
    Citation Envoyé par crocodilex Voir le message
    Montres un peu la commande que tu passes pour générer ta librairie....
    Il est vrai que lors du post du message d'erreur, je compilais le code pour en faire une application executable ... Et non pas une librairie ...

    Sinon pour la librairie, j'utilise :
    Création de la librairie statique: ar rv lib.a carre.o cube.o
    Création de la librairie dynamique: gcc -shared carre.o cube.o -o lib.so

    Compilation en utilisant la librairie statique: gcc pgm.c lib.a -o pgm
    Compilation en utilisant la librairie dynamique: gcc pgm.c ./lib.so -o pgm


    -----------

    Merci Thierry pour toute ces info's

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/05/2005, 09h50
  2. [TP]Problème de programme exécutable en mode graphique
    Par GoodVibe dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 24/09/2004, 09h47
  3. Livre sur la programmation linux (shell et noyau)
    Par Tchetch dans le forum Linux
    Réponses: 10
    Dernier message: 07/07/2004, 08h27
  4. [Kylix] probleme execution programme
    Par vin's dans le forum EDI
    Réponses: 1
    Dernier message: 31/03/2004, 12h25
  5. Pb passage programme linux->visual C++
    Par StephP dans le forum MFC
    Réponses: 3
    Dernier message: 16/01/2004, 12h56

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