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 :

configurer une bibliothèque dans un projet


Sujet :

C

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut configurer une bibliothèque dans un projet
    Bonjour

    Je débute en C sur eclipse au sein d'un cours
    de plus je suis sur une VM fedora avec eclise kepler (c'est dans le cadre du cours obligé de rester la dessus)
    de toute façon ce n'est pas trop ça je pense le véritable problème

    j'ai essayé de suivre : http://alexandre-laurent.developpez....-bibliotheque/
    mais ce n'était pas évident mais j'ai quand même essayé de configurer mon projet et mon environnement :

    j'ai crée tous les fichiers .c et .h dans le dossier principal à ce moment là le dossier binaires était encore là
    j'ai généré et lancer une fois
    ensuite j'ai voulu créer :
    un dossier sources /sources
    un dosssier normal /headers

    ensuite j'ai fait un click droit sur proprietes du dossier global du projet
    dans generation c/c++ /Parametres/Inclusions=>chemins inclusions(-l) j'ai mis le chemin pour les headers

    dans generation c/c++ /Parametres/Bibliotheques=>chemins de recherches bibliotheques (-L) j'ai mis le chemin pour les sources
    je ne savais pas trop quoi mettre au début dans Bibliotheques j'ai mis -lXXX

    j'ai généré mais il perd le dossier /binaries et j'ai une seule erreur :
    make: *** Aucune règle pour fabriquer la cible « exos.o », nécessaire pour «dossier du projet ». Arrêt.

    je crois comprendre ce qui ne va pas le premier fichier de /sources est exos.o,
    donc mon dossier /source n'est pas compilé du tout d'ailleurs si je remet les fichiers .c à la racine tout va bien.

    où est mon erreur ? c'est le makefile qui genere le binarie non ?
    j'ai donc besoin d'aide pour bien faire pointer sur /sources dans proprietes car je crois que je n'ai pas tout compris

    en vous remerciant de votre aide

  2. #2
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 697
    Points : 30 996
    Points
    30 996
    Billets dans le blog
    1
    Par défaut
    Salut

    Je connais pas Eclipse mais je connais la chaine de compilation.

    Une compilation se fait en 3 étapes
    1. les ".c" sont analysés et cela génère des ".o"
    2. les ".o" sont regroupés ensembles dans une librairie ".a" (statique) ou ".so" (dynamique). La statique est ensuite intégrée au source lors de l'édition de liens alors que la dynamique reste externe est elle n'est alors intégrée que quand le programme s'exécute. Dans le premier cas le programme est indépendant mais ne peut pas évoluer sans être recompilé et dans l'autre il a besoin de sa librairie mais elle peut évoluer de façon indépendante.
    3. les ".o" qui ne sont pas dans une librairie sont assemblés avec les autres librairies utilisées et ça génère l'exécutable


    L'étape 2 est facultative (on peut très bien ne pas générer de librairie et ne prendre que des ".o" pour l'étape 3) ; et s'il n'y a qu'un seul source, alors l'ensemble de la chaine est fait d'un coup.

    • L'option "-I" permet à l'étape 1 d'indiquer des chemins par défaut pour les include. Si par exemple j'écris #include <toto.h> et que je compile avec -Ixxx -Iyyy alors le compilo ira chercher "toto.h" dans le dossier "xxx" ou "yyy" (le premier des deux)
    • L'option "-L" c'est le même principe mais c'est pour les librairies de l'étape 3 => -Lxxx -Lyyy toto.sa => ira chercher "toto.sa" dans le dossier "xxx" ou "yyy")
    • L'option "-l" c'est juste un raccourci. Si par exemple tu écris "-lXXX" alors ça ira chercher la librairie "/usr/lib/libXXX.so" (ça rajoute "/usr/lib/lib" devant et ".so" derrière)


    A partir de là tu devrais mieux t'en sortir pour paramétrer Eclipse...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 488
    Points : 43 313
    Points
    43 313
    Par défaut
    L'auteur du tuto que tu as cité en a écrit un autre :

    http://alexandre-laurent.developpez....toriels/cmake/

    que tu peux compléter par cela :

    https://cmake.org/Wiki/CMake:Eclipse_UNIX_Tutorial

    Avec ceci, tu n'as pas à t'occuper de la chaine de compilation.

    Si tu ne peux pas installer CMake, il te faut comprendre qu’Eclipse est un IDE (EDI en Français). Le principe est toujours le même : l'IDE te regroupe tous tes fichiers source en un projet, te donne l'indentation automatique, l'assistance à la saisie de code (auto-complétion de fonctions, affichage des paramètres attendus par celles-ci, etc ..). Il te permet ensuite de compiler et de débugguer. Ces deux choses-là sont faites par des outils externes (qui peuvent être fourni automatiquement avec l'IDE).

    La chaine de compilation est bien expliquée ici :
    https://fr.wikipedia.org/wiki/Compil...nformatique%29
    Mais tu lea verras en cours (ou tu l'as déjà vu).

    A cela vient se rajouter l’utilisation de Make, qu'on peut comparer à un script de compilation. Celui-ci va compiler les fichiers .c de ton projets un à un, puis faire l'éditions de liens pour les bibliothèques dynamiques ou les incorporer à ton exécutable en cas de bibliothèques statiques. L’intérêt est que si tu modifie un de tes fichiers .c, tout ne va pas être recompiler, juste ton .c modifié.

    CMake vient se rajouter par dessus, c'est un générateur de Makefile.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 069
    Points
    219 069
    Billets dans le blog
    120
    Par défaut
    Bonjour,

    Votre projet ne semble pas avoir de dépendance (vous n'utilisez pas de bibliothèque). Du coup :
    dans generation c/c++ /Parametres/Bibliotheques=>chemins de recherches bibliotheques (-L) j'ai mis le chemin pour les sources
    je ne savais pas trop quoi mettre au début dans Bibliotheques j'ai mis -lXXX
    n'est pas utile. Vous ne devez rien mettre comme chemin de recherche de bibliothèque, et surtout pas mettre de -lXXX (sinon, il va chercher une bibliothèque nommée XXX).

    De plus, si vous avez déplacé les fichiers après la création/configuration du projet, je pense qu'il ne va pas savoir où retrouver les fichiers. Dans un tel cas, retirer les fichiers du projet (dans Eclipse) et remettez les dans le projet en faisant un : ajout fichier existant.

    EDIT : pour CMake, je ne suis pas vraiment d'avis de le conseiller pour un débutant. Il faut déjà comprendre comment ça marche et savoir le faire à la main (et rencontrer des problèmes pour apprendre à les résoudre (et comprendre)). Ensuite, on peut utiliser CMake un peu plus sereinement. Enfin, c'est mon avis.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Je pense que CMake est installé.

    J'ai essayé de faire comme à proposé LittleWhite.
    J'ai d'abord retiré tout forme de raccourci vers mon dossier sources dans propriété
    J'ai retiré les fichiers qui ne voulaient pas être compilé et généré de binaries. disons que je les ai copiés dans un dossier quelconque puis supprimé.
    Ensuite suis aller sur mon dossier source et j'ai fait importer du dossier auquel j'avais copié pensant qu'il allait refaire les dépendances
    mais j'ai toujours : make: *** Aucune règle pour fabriquer la cible « exos.o », nécessaire pour « nsy103_frenaud1 ». Arrêt.
    et c'est juste parceque c'est le premier fichier dans l'ordre ce serait un autre il buterait sur l'autre.

    pour l'instant je bosse en les laissant en dehors du dossier. Par contre le dossier header est reconnu. mais c'est vrai j'aurais aimé une organisation propre. Header, Sources, et plus tard Test, etc...

    Je verrais après en reprenant bien les tutos à moins que vous ayez une solution claire pour mon niveau : tres didactique comme si j'avais 4 ans (je les ai ouuuaih c'est gentil ! non? zuut). Mais je dois avancer dans mes cours, j'ai bloqué presque deux jours la dessus. Sincèrement c'est pas de la feignantise loin de là.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 069
    Points
    219 069
    Billets dans le blog
    120
    Par défaut
    Pour avoir une plus grande clarté, vous pouvez regarder le log complet de compilation (Eclipse devrait permettre d'y accéder) afin que l'on sache (vous et nous ) quelles sont les commandes qu'il a tenté.
    Ensuite, une autre solution, c'est de joindre le projet au forum, afin que l'on puisse tester. Sinon, une capture de l'arborescence du dossier (avec le terminal et la commande tree) + une capture de l'arborescence dans Eclipse.
    Toutefois, j'avoue que l'erreur me laisse dubitatif, sachant que je ne suis pas sur de comprendre pourquoi il n'y a pas de règle pour exos.o (j'imagine que le projet s'appelle exos ?).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  7. #7
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    Le projet ne s'appelle pas exos
    j'avoue ne pas trouver l'option du fichier log complet de la compilation
    et le problème je tente de faire une capture avec impr ecran mais je suis dans une VM linux fedora et apparement il prend pas la capture de la VM
    quant au commande tree dans un terminal je suis pas très doué encore avec les commandes dans un terminal linux et pas beaucoup plus dans un terminal cmd et batch

    Mais j'ai résolu le problème par hasard :
    j'ai créé un dossier simple (non pas un dossier sources c options que propose eclipse) que j'ai nommé "sources"
    ensuite j'ai créé un vrai dossier sources c et je lui ai donné le même nom "sources" que le dossier simple
    et là miracle ! le dossier ne s'est pas transformé en dossier sources c (avec le petit c ) mais à pris en compte les fichiers c et en faisant un include dans paramètres du projet avec headers.
    J'ai enfin dans les includes mon dossier "sources" et "headers", opération impossible avant sans bug à la compil et bloquage sur le premier fichier exos.c et donc affichage d'erreur pour générer exos.o.
    Maintenant tout fonctione mais je ne sais pas comment !!!.
    donc pour l'instant je ne passe pas par la création d'un dossier sources proposé par eclipse mais par la création d'un dossier simple puis dossier sources puis paramètre include du projet.

    Je verrais plus tard l'usine à gaz d'eclipse. Etant sur un morceau important de nos cours :les sémaphores et la synchronisation : mutex, allocation ressources, exclusion mutuelle section critique. Et implication dans un système linux.
    Encore merci à tous.
    d'habitude je bosse coté windows pour moi sur eclipse mars en PHP, JS et java et comme tout fonctionne j'avoue que j'apprend pas encore tout de l'environnement eclipse. au mieux je met des plugins pour avoir un seul eclipse et plusieurs perspectives php,js,css ou java,junit,log. et c'est tout.

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 069
    Points
    219 069
    Billets dans le blog
    120
    Par défaut
    Je sais que mon commentaire peut faire office de trollisme aigue, mais je déconseillerai Eclipse comme IDE. Pour les débutants, je le trouve lourd et trompeur dans sa façon de configurer dossier et projet. De plus, pour moi, il n'est pas si approprié de faire du C/C++ avec Eclipse (malgré la version CDT).
    Je vous conseillerai donc, Code::Blocks ou encore Qt Creator, ou si vous êtes, gcc en ligne de commande avec un simple éditeur et non un EDI (style Geany/Gedit/Kedit). Ce dernier choix est très (trop ?) didactique.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  9. #9
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    je comprend j'entend parfois là même chose pour java et eclipse.

    J'ai fait du basic puis du pascal puis du C y'a tres longtemps et pas forcément poussé puis j'ai arrété. J'ai donc juste de vague souvenir du C comme pour le pascal : pour moi c'était l'art de la manipulation des pointeurs et des types surtout pour les char et entrée sortie qui faisait qu'on était un codeur correct.

    Pour l'instant le prof veut qu'on bosse sur une VM fedora et l'ide eclipse kepler. Mais le cours concerne surtout la compréhension de Linux pas vraiment la programmation en C. c'est un plus certes mais juste savoir lire des lignes de codes pour comprendre ce qui se passe dans le cadre d'une sémaphore, le prof appelle ça comme ça dans le cadre de la synchronisation des processus sous linux. c'est peut-être pas un terme utilisé par tout le monde.
    Donc je vais suivre le cours. J'ai voulu d'ailleurs ramener les codes sous mon eclipse mars j'ai été mettre CDT mais comme je suis un neuneu en eclipse (celui de la VM du prof devait deja être configurer. ) beaucoup de codes ne compilaient plus. donc soit je me tapais tous les tutos pour bien configurer CDT et je zappais les cours sur linux du prof. Certains peuvent faire les deux moi je ne suis pas un génie.
    Mais ceux sont des cours au CNAM en foad donc t'es pas toute la journée en cours. parfois je bosse parfois j'ai des journées entières pour me consacrer au cours ou me reposer donc mais c'est moins évident que ça en a l'air.
    Pour ceux qui connaissent ou ont fait le CNAM ici d'ailleurs je les salue !

    Mais merci pour tes conseils LittleWhite je n'ai pas vu de trollisme juste un point de vue.
    Pour moi le trollisme c'est de renvoyer le gars à ses cours ou à des liens bien compliqués sans rien lui indiquer du tout pourquoi en le snobant voir en l'humiliant bien fort sur son niveau .

  10. #10
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 069
    Points
    219 069
    Billets dans le blog
    120
    Par défaut
    En tout cas, bon courage.

    Avec le logiciel de machine virtuelle, on doit pouvoir faire des captures d'écran, sans passer par les touches du style Impr Ecran. Ça doit être simplement caché dans un menu du logiciel.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  11. #11
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    en tout cas je marque résolu sur le fait que :
    1) je créé un dossier simple pour "sources" et "headers". le dossier "source" a ce moment là quand je met les fichiers .c rend inaccessible(grisé) les fichiers et met une tite barre sur le dossier.
    2) je rajoute ensuite un dossier source proposé par eclipse du même nom que le dossier simple et eclipse accepte étrangement sans me dire qu'un dossier a le même nom ce que d'habitude logiquement il fait comme n'importe quel gestionnaire de fichiers. à ce moment là tout est bon manque plus que les liens vers ces dossiers.
    3) ensuite donc je créé dans propriétés/bibliotheque/include du projet les liens vers dossiers "sources" et "headers"

    et là quand je compile il créé le binary j'ai ma petite arborescence comme je voulais.

    maintenant pourquoi ça fonctionne je suis incapable l'expliquer

  12. #12
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 865
    Points : 219 069
    Points
    219 069
    Billets dans le blog
    120
    Par défaut
    À priori vous n'êtes pas à côté de la plaque et en plus ça marche.
    Il faut comprendre que les dossiers réels, et les dossiers vu dans l'arborescence par Eclipse ne sont pas nécessairement les mêmes (Eclipse utilise comme une arborescence virtuelle).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  13. #13
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 238
    Points : 95
    Points
    95
    Par défaut
    un peu comme si le dossier Source d'eclipse était vu comme un dossier tampon qu'il remplace lorsqu'il voit qu'il y a des fichiers .c dans le dossier réel "Sources" que je viens de créer.
    Pas encore essayé en appelant différemment mon dossier "Sources " doit y'avoir une histoire de labellisation dans ce cas mais pas sûr si il voit des fichiers .c

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/04/2015, 00h16
  2. Réponses: 11
    Dernier message: 24/01/2012, 15h09
  3. Réponses: 1
    Dernier message: 28/01/2011, 12h11
  4. Utilisation d'une librarie dans un projet
    Par gids01 dans le forum MFC
    Réponses: 17
    Dernier message: 27/01/2006, 15h41
  5. insérer une dll dans un projet
    Par Biosox dans le forum MFC
    Réponses: 3
    Dernier message: 24/01/2006, 10h41

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