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

Ada Discussion :

faire une bibliothèque statique avec une partition passive partagée et l'exporter pour le C.


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut faire une bibliothèque statique avec une partition passive partagée et l'exporter pour le C.
    Bonjour,

    Je voudrais faire une bibliothèque statique avec une partition passive partagée et l'exporter pour le C.
    Comment m'y prendre ? Est- ce possible ; Si non en dynamique ?

    C'est pour ce projet : http://manlight.systemc/Genetic

    A part écrire le service dans la bibliothèque ?

    S'il vous plaît ?

  2. #2
    Invité
    Invité(e)
    Par défaut Ma chaîne de production : Erreur de segmentation.
    Re- bonjour,

    j'ai considérablement reculer.

    J'ai réduit mon paquet racine à rien et le paquet enfant je l'ai remplacé par un paquet utilisateur quasiment vide :

    racine
    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    package Gene is
       pragma Shared_Passive(Gene);
     
       type Gene_Type is (Iso, Endo, Exo);      
    end Gene;


    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    with Gene;
    use Gene;
    with Ada.Text_Io;
    use Ada;
    with Interfaces.C;
    use Interfaces;
    package Genetic is
     
       procedure Genesis(New_Gene   : C.Char;
                         Total_Gene : C.Char;
                         List_Mode  : C.Char);
     
       pragma Export (C, Genesis, "genesis");
     
    end Genetic;


    Code ada : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    package body Genetic is
     
       procedure Genesis(New_Gene   : C.Char;
                         Total_Gene : C.Char;
                         List_Mode  : C.Char) is
       begin
     
          Text_Io.Put(Boolean'Image(Boolean'Val(C.Char'Pos(New_Gene))));
          Text_Io.Put(Boolean'Image(Boolean'Val(C.Char'Pos(Total_Gene))));
          Text_Io.Put(Boolean'Image(Boolean'Val(C.Char'Pos(List_Mode))));
     
     
       end Genesis;
    end Genetic;


    Le header C
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    /* gene_genetic.h */
    #include <stdbool.h>
    extern void genesis (bool new_gene, bool total_gene, bool list_mode);

    Le main C
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include <stdbool.h>
    #include "./gene_genetic.h"
     
    int main (int argc, char *argv[])
    {        
      genesis(true, false, false);    
      return 0;
    }

    Le Makefile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    .PHONY: cgenesis gene genetic
     
    gene:
            gnatmake -c gene.ads  -aIlib
            gnatbind -Lmygene gene 
            ar cr libmygene.a gene.o
            gcc -shared -o libgene.so gene.o  
     
     
    genetic:
            gnatmake -c genetic.adb  -aIlib
            gnatbind -C -Lmygenetic genetic 
            ar cr libmygenetic.a genetic.o gene.o
            gcc -shared -o libgenetic.so gene.o genetic.o
     
    cgenesis:
            gcc main.c -L. -o cgenesis -lgene -lgenetic -lgnat
     
    clean:
            rm *.ali *.o b~*
    mrproper: 
            rm *~ *.so *.a main.c
    Le résulta de compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    manuel@eden:~/2015Projects/Ada/Test$ ls
    gene.ads  gene_genetic.h  genetic.adb  genetic.ads  main.c  Makefile
    manuel@eden:~/2015Projects/Ada/Test$ make gene && make genetic && make cgenesis
    gnatmake -c gene.ads  -aIlib
    gcc-4.6 -c -Ilib gene.ads
    gnatbind -Lmygene gene 
    ar cr libmygene.a gene.o
    gcc -shared -o libgene.so gene.o  
    gnatmake -c genetic.adb  -aIlib
    gcc-4.6 -c -Ilib genetic.adb
    gnatbind -C -Lmygenetic genetic 
    warning: gnatbind switch -C is obsolescent
    ar cr libmygenetic.a genetic.o gene.o
    gcc -shared -o libgenetic.so gene.o genetic.o
    gcc main.c -L. -o cgenesis -lgene -lgenetic -lgnat
    manuel@eden:~/2015Projects/Ada/Test$ ls
    b~gene.adb  b_genetic.c  gene.ads  gene_genetic.h  genetic.adb  genetic.ali  libgene.so     libmygene.a     main.c
    b~gene.ads  cgenesis     gene.ali  gene.o          genetic.ads  genetic.o    libgenetic.so  libmygenetic.a  Makefile
    Exécution :
    manuel@eden:~/2015Projects/Ada/Test$ ./cgenesis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Erreur de segmentation
    manuel@eden:~/2015Projects/Ada/Test$

    Avec le projet complet, même résulta.

    Merci pour vos réponse et votre investissement.

  3. #3
    Invité
    Invité(e)
    Par défaut Sorties textuelles en cause ?
    J'en suis arrivé au minimum.
    J'ai supprimé l'affichage et ça fonctionne, mais non quoi !

  4. #4
    Invité
    Invité(e)
    Par défaut un Makefile pour exporter et compiler un projet C+Ada
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    .PHONY: gene genetic cgenesis
     
    all: gene genetic cgenesis
     
    gene:
            gcc-4.6 -c -g -O2 gene.adb
            gcc-4.6 -c -g -O2 genetic.adb
            gcc-4.6 -c -g -O2 adamain.adb
            gnatmake adamain.adb
            rm adamain.o adamain.ali
            gnatbind -n -Lgene gene
            ar rc gene.a gene.o
            gcc -shared -o libgene.so *.o
     
     
    genetic:
            gnatbind -n -Lgenetic genetic
            gnatmake -c genetic.adb
            ar cr genetic.a genetic.o gene.o
            gcc -shared -o libgenetic.so *.o
     
     
    cgenesis:
            gcc-4.6 -c main.c
            gnatbind gene.ali genetic.ali -o b__main.adb -n
            gcc-4.6 -c b__main.adb -lgnat-4.6 \
            -L. -L/usr/lib/gcc/i486-linux-gnu/4.6/adalib/ \
            -shared -shared-libgcc
            ar cr libdefault.a *.o
            ranlib libdefault.a
            gcc-4.6 main.o -o cgenesis -lgnat-4.6 \
            -L. -L/usr/lib/gcc/i486-linux-gnu/4.6/adalib/ \
            -shared -shared-libgcc

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 17/04/2014, 15h45
  2. Création d'une bibliothèque statique avec automake
    Par Analou dans le forum Bibliothèques, systèmes et outils
    Réponses: 3
    Dernier message: 20/06/2013, 12h34
  3. Rewrite d'une url statique vers une url statique ?
    Par fatdarron dans le forum Apache
    Réponses: 1
    Dernier message: 15/08/2009, 11h35
  4. Problème de lien avec une bibliothèque statique
    Par streetpc dans le forum C++/CLI
    Réponses: 2
    Dernier message: 28/10/2006, 17h38
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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