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 :

que doit on ecrire dans le CmakeFile pour compiler avec un fichier deja compiler


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 25
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut que doit on ecrire dans le CmakeFile pour compiler avec un fichier deja compiler
    bonsoir

    j'ai un fichier de type .a (libmap.a) que je recois des proffesseurs.
    j ai coder une autre partie du code(des modules qui utilisent des fonctions de libmap.a)
    je veux debugger mon programme mais le probleme c est que le programme ne reconnais pas les fonctions et les structures definies dans le libmap.a.
    on m'a dit qu il fallais rajouter libmap au cMake file mais je ne sait pas comment le rajouter.

    si quelqu un a une idee... merci beaucoup

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 770
    Par défaut
    Les fichiers .a sous Linux et .lib sous Windows sont des bibliothèques statiques (<- lien wikipedia en anglais) : en gros, c'est du code compilé qui sera intégralement injecté dans le binaire résultat et donc sera chargé en mémoire lors de l'exécution.
    Les fichiers .so sous Linux et .dll sous Windows sont des bibliothèques dynamiques : en gros, c'est du code compilé qui sera chargé en mémoire en fonction des besoins lors de l'exécution.
    Sous Windows tu as aussi des fichiers .lib/.dll qui sont des bibliothèques partagées : en gros, ce sont des bibliothèques dynamiques, mais tout le code de gestion (ouverture/ recherche et appel des fonctions/ fermeture/ ...) est généré automatiquement.

    Donc voila tu comprends que si tu a 1 bibliothèque statique, qui est nécessaire pour la partie d'édition des liens, il te manque les entêtes (fichiers .h) pour la compilation.
    On fait comme cela afin de ne pas divulguer le code source

    Et l'autre truc, mais à vérifier , il faut savoir avec quelles options de génération cette bibliothèque a été créée. Parce que si elle a été compilée en "release" au lieu de "debug", il manque tous les symboles et autres qui permettent de déboguer.
    Et donc tous les points d'arrêts et autres ne fonctionnent pas.

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    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 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par sachadoron Voir le message
    j ai coder une autre partie du code(des modules qui utilisent des fonctions de libmap.a)
    je veux debugger mon programme mais le probleme c est que le programme ne reconnais pas les fonctions et les structures definies dans le libmap.a.
    on m'a dit qu il fallais rajouter libmap au cMake file mais je ne sait pas comment le rajouter.
    Un exemple de ton Makefile aurait été utile. Et sinon la conjugaison c'est une option chez-toi?
    Pour compiler un source "toto.c" qui utilise libmap.a: gcc toto.c libmap.a -o toto.
    Pour compiler deux sources toto.c et titi.c qui vont ensembles avec libmap.a:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c toto.c
    gcc -c titi.c
    gcc toto.o titi.o libmap.a -o nom_executable
    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]

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 770
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Un exemple de ton Makefile aurait été utile.
    C'est cmake attention

    C'est pour cela que si tu mets cette bibliothèque dans 1 dossier qui va bien tu peux également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    gcc -c toto.c
    gcc -c titi.c
    gcc toto.o titi.o -lmap -o nom_executable

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/04/2011, 20h54
  2. ecrire dans un input type select avec jquery
    Par stomerfull dans le forum jQuery
    Réponses: 1
    Dernier message: 29/09/2009, 18h23
  3. Réponses: 4
    Dernier message: 03/03/2008, 15h44
  4. Réponses: 4
    Dernier message: 11/04/2007, 17h07

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