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 :

compiler du C avec de l'ada


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Par défaut compiler du C avec de l'ada
    Salut à tous. Je suis en train de réaliser un petit projet temps réel en C/C++ et Ada. Je développe sous éclipse et le plugin d'aonix... seulement voila, la partie Ada avance bien, mais je n'arrive pas à compiler le tout sous windows, c'est à dire à créer un exe avec l'Ada et le C/C++... comment faire? avec gcc?
    Je sais que gcc peut me produire des .o et gnat aussi, mais comment les compiler ensemble???
    Merci de votre réponse, ++

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878
    Par défaut
    Citation Envoyé par kazoumoulox
    Salut à tous. Je suis en train de réaliser un petit projet temps réel en C/C++ et Ada. Je développe sous éclipse et le plugin d'aonix... seulement voila, la partie Ada avance bien, mais je n'arrive pas à compiler le tout sous windows, c'est à dire à créer un exe avec l'Ada et le C/C++... comment faire? avec gcc?
    Je sais que gcc peut me produire des .o et gnat aussi, mais comment les compiler ensemble???
    Merci de votre réponse, ++
    A priori, si tu as des fichiers objet obtenus par compilation de sources en C et d'autres obtenus par compilation de sources en Ada, tu devrais pouvoir les lier ensemble [1]... Où se situe le problème exactement ? Qu'as-tu essayé (si possible : qui soit reproductible par tout un chacun sans avoir à installer Eclipse et les plugins machin ou truc) ? Message(s) d'erreur obtenus ?

    [1] - Et, effectivement, si tu as compilé tes sources en C avec gcc et tes sources en Ada avec gcc, il semble assez naturel de les lier avec gcc...

    PS : à ma connaissance, le "C/C++" n'existe pas : soit c'est du C, soit c'est du C++.

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par kazoumoulox
    Salut à tous. Je suis en train de réaliser un petit projet temps réel en C/C++ et Ada. Je développe sous éclipse et le plugin d'aonix... seulement voila, la partie Ada avance bien, mais je n'arrive pas à compiler le tout sous windows, c'est à dire à créer un exe avec l'Ada et le C/C++... comment faire? avec gcc?
    Je sais que gcc peut me produire des .o et gnat aussi, mais comment les compiler ensemble???
    Attention au sens des mots... Tu confonds compiler (action de traduire un code source en code machine : ficher binaires dit 'objets', .obj, .o) et éditer les liens, qui consiste à rassembler les fichiers objets en un seul exécutable (.exe etc.) et à l'occasion, de résoudre les liens externes entre les modules.

    Les fichiers objets peuvent avoir des origines diverses (compilations de codes sources dans différents langages), mais doivent être écrits dans un format compréhensible par l'éditeur de lien. De plus, les code produit doit être celui de la même cible, et les ABI (Application Binary Interfaces) doivent être identiques.

    Bref, ce n'est pas trivial. Je ne sais pas si il existe une méthode spécifiée pour appeler des fonctions C en Ada. C'est un problème de compilateur Ada (GNAT, par exemple). Lire sa doc.

    Il y a peut être des précautions à prendre au niveau du code C (mot clé spécial genre 'Pascal' pour obtenir une ABI plus conforme aux attentes de Ada, par exemple, je dis n'importe quoi...)

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je rajouterais même qu'il peut y avoir à développer des fonctions d'échanges inter-langages.

    (par exemple en Fortran les routines passant des chaînes de caractères passent en arguments implicites la longueur, de même pour les tableaux, ce qui fait que lorqu'on veut appeler une fonction C à partir de Fortran il faut faire un intermédiare C comportant cet argument en explicite)

    Bref le fait de compiler, comme l'a fort justement dit Emmanuel, produit du code machine non exécutable. Pour qu'on puisse en faire un exécutable, il faut non seulement que les fonctions puissent être connues (édition de liens), mais de plus qu'elles satisfassent la règle syntaxique du langage appelant.

    Donc ce n'est pas vraiment trivial. Il y a certainement des procédures documentées.

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Août 2003
    Messages
    878
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 878

  6. #6
    Membre expérimenté
    Homme Profil pro
    Consultant SharePoint
    Inscrit en
    Mars 2006
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 270
    Par défaut
    Bon en fait....on s'est appercu que la version du gcc utilisé par gnat était ancienne...et donc ne gérait pas les thread du C...donc on a fait du cross compiler (C/ADA/QT/C++) et ca roule, merci de votre aide!++

Discussions similaires

  1. Compiler en debug avec une librairie en release
    Par Philippe320 dans le forum MFC
    Réponses: 4
    Dernier message: 25/11/2005, 17h33
  2. Probleme en compilant le code avec C2.EXE ?!?!?
    Par angelevil dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 17/11/2005, 16h13
  3. Compile prog C avec Perl
    Par kij dans le forum MFC
    Réponses: 4
    Dernier message: 18/04/2005, 11h56
  4. Réponses: 10
    Dernier message: 14/04/2005, 19h23
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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