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 :

Problème de liaison avec la bibliothèque fannada


Sujet :

Ada

  1. #1
    Invité
    Invité(e)
    Par défaut Problème de liaison avec la bibliothèque fannada
    Yep, salut !

    Fannada : Fast Artifical Neuronal Network with Ada

    Voila, je ne suis pas une bête en informatique et la je ne sais pas comment utiliser la librairie FannAda !

    D'habitude, j'utilise les librairie standard d'Ada ou les miennes. Bref j'ai écris ça ::=
    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
     
        with Lfa,
         Lfa.Data_Types,
         Lfa.fann;
     
        use Lfa,
         Lfa.Data_Types,
         Lfa.fann;
     
        procedure Main is
     
        begin
     
          null;
     
        end Main;
    J'ai compilé comme ça ::=
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gnatmake main -aI/usr/local/share/ada/adainclude/fannada -aO/usr/local/lib/ada/adalib/fannada
    Et j'ai une erreur à la liaison ::=

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    gcc-4.1 -c -I/usr/local/share/ada/adainclude/fannada main.adb
    gnatbind -aO./ -aI/usr/local/share/ada/adainclude/fannada -aO/usr/local/lib/ada/adalib/fannada -I- -x main.ali
    gnatlink main.ali
    ./lfa-fann.o: dans la fonction « lfa__fann__create_sparse »:
    lfa-fann.adb:(.text+0x323): référence indéfinie vers « fann_create_sparse_array »
    collect2: ld returned 1 exit status
    gnatlink: cannot call /usr/bin/gcc-4.1
    gnatmake: *** link failed
    Merci !

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait, a mon avis, il te manque un -llenomdelabibliotheque.

    D'après ce que j'ai pu comprendre, c'est un wrapper ADA -> C, et donc si tu veux utiliser la bilbiothèque (au passage, on dit bibliothèque et pas librairie ), il faudra que tu ajoutes les options de liaison avec la bibliothèque C.

  3. #3
    Invité
    Invité(e)
    Par défaut Merci Promu@ld
    Yep, salut !

    J'ai tenté de rajouter " -largs -L/usr/local/lib -lfannada" mais le résultat est similaire ....

    Je vais chercher "wrapper" sur google ...

    Merci

  4. #4
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    (au passage, on dit bibliothèque et pas librairie )
    Anglicisme

    Sinon pour la liaison, je pense comme Promu@id, et je pense que tu trouverait peut-être la solution en explorant l'archive avec laquelle tu as installé Fannada. C'est préférable d'explorer l'archive, parce que maintenant qu'elle est installée, elle est noyée dans les autre fichiers du repertoire. En explorant l'archive donc tu saura que tu as à faire à des fichiers de Fanada. Ensuite recherche les lib* qui lui appartienne, ainsi que les *.o qui sont dans l'archive, fait en une liste, et repère les dans le repertoire d'installation (pour t'assurer que tout y est).

    Ensuite, si tout y est, ajoute les tous (oui, tous) à la liste des fichiers à lier, et voit si ça marche. Si ça marche, alors supprime un élément, recompile, si ça marche, retire encore quelque chose, recompile, etc, etc, en laissant ce qui produit des messages d'erreurs si on le retire.

    C'est tiré par les cheveux, mais dans ce genre de situation et en l'abscence de documentation répondant à la question, c'est la solution la plus efficace et la plus directe.

    S'il y a quelque chose que tu ne comprend pas, n'hésite pas à demander.
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci Hibou57,

    Pas certain d'avoir bien compris !

    J'ai regardé si chacun des fichiers .ali et .ad{s,b} se trouvaient bien dans les répertoire respectifs .... pour la bibliothèque qui se nome libfannada.so.2.0.0 , c'est un fichier unique ; Je n'ai donc pas compris en quoi consiste la liaison des tous les fichier.

    Merci

  6. #6
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Salut,

    Précedement tu disais avoir essayé "-largs -L/usr/local/lib -lfannada""

    Tu dis qu'il y a un fichier libfannada.so.2.0.0

    Alors pour l'instant c'est plutôt bon signe, mais il reste encore des choses à vérifier : est-ce que libfannada.so.2.0.0 se trouve bien dans /usr/local/lib . Parce que si elle se trouve dans un des repertoire de GNAT, alors faut changer le chemin de recherche. Ensuite, tu dis avoir trouvé libfannada.so.2.0.0, mais y at-il un lien symbolique libfanada.so.2 qui pointe vers ce so.2.0.0 ?

    C'est une habitude sur les système basés sur Linux : il y a un fichier pour la librairie dynamique, le nom du fichier comprend des numéro de versions majeur et mineur, et on a un lien qui reprend le nom de la librairie, mais sans le numéro de version mineure. De cette manière, on peut changer la version d'une librairie, sans changer les références à cette librairie (à condition de rester sur la même version majeure.... car les versions majeurs qui différent sont incompatibles).

    Si ce lien n'existe pas, alors ça peut expliquer que le lieur ne la trouve pas.

    Alors je te propose donc pour résumé de vérifier si la librairie est bien sous le chemin de recherche que tu passe au lieur. Ensuite, essai de faire un lien symbolique nomé libfannada.so.2 qui pointe vers libfannada.so.2.0.0

    Pour Fanada, c'était une installation manuelle ou une installation avec quelque chose du genre un package Debian ou autre ?
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  7. #7
    Invité
    Invité(e)
    Par défaut
    Yep, salu !
    Citation Envoyé par Hibou57 Voir le message
    Alors pour l'instant c'est plutôt bon signe, mais il reste encore des choses à vérifier : est-ce que libfannada.so.2.0.0 se trouve bien dans /usr/local/lib . Parce que si elle se trouve dans un des repertoire de GNAT, alors faut changer le chemin de recherche. Ensuite, tu dis avoir trouvé libfannada.so.2.0.0, mais y at-il un lien symbolique libfanada.so.2 qui pointe vers ce so.2.0.0 ?
    Les fichiers se trouvent bien dans les répertoires ad hoc et j'ai bien un lien libfannada.so et non libfannada.so.2 qui point sur libfannada.so.2.0.0

    Citation Envoyé par Hibou57 Voir le message
    Alors je te propose donc pour résumé de vérifier si la librairie est bien sous le chemin de recherche que tu passe au lieur. Ensuite, essai de faire un lien symbolique nomé libfannada.so.2 qui pointe vers libfannada.so.2.0.0
    J'ai essayé .... mais ça ne fonctionne pas :/
    Citation Envoyé par Hibou57 Voir le message
    Pour Fanada, c'était une installation manuelle ou une installation avec quelque chose du genre un package Debian ou autre ?
    J'ai récupéré fannada sur le web et ai procédé à l'instalation manuellement.

  8. #8
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Ok, c'était une installation manuelle.

    Je viens de télécharger les sources de FannAda et le fichier make me dit aussi que les librairies doivent être sous /usr/local/lib

    Il y a une indication qui dit que les programmes doivent être compilé avec l'option -lfannada Ca c'est ok, c'est ce que tu as fais)

    Pas d'erreur à ce niveau alors.

    J'ai recherché dans tous les sources, pour voir si j'y trouvais fann_create_sparse_array (l'identificateur qui pose problème), et je l'ai trouve dans
    lfa-c_interface.ads
    ou il apparait dans la ligne
    pragma Import (C, C_Fann_Create_Sparse, "fann_create_sparse_array");

    Donc l'identificateur semble se trouvé dans un fichier objet externe, qui n'est pas produit par les sources fournis avec l'archive d'installation

    On sait au moins déjà que tu donnes les bonnes options à la ligne de commande, que ce n'est pas une erreur de ta part à l'installation, et qu'il manque un fichier objet qui n'est pas dans l'archive (surtout qu'en plus le lfa-c_interface.ads contient des tonnes d'autres clauses import)

    J'ai vu que tu as posté dans hardware.fr Bon, ok, je vois qu'il y a urgence, et comme j'ai un peu de temps aujourd'hui, je vais m'atteler à te résoudre ça.

    En attendant vois de ton coté si tu n'as pas un package avec des fichiers *.o fourni d'origine et non produits par la procédure d'installation

    A tout bientôt!
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hibou57 Voir le message
    J'ai vu que tu as posté dans hardware.fr Bon, ok, je vois qu'il y a urgence, et comme j'ai un peu de temps aujourd'hui, je vais m'atteler à te résoudre ça.

    En attendant vois de ton coté si tu n'as pas un package avec des fichiers *.o fourni d'origine et non produits par la procédure d'installation

    A tout bientôt!
    Merci Hibou57,

    Je n'ai pas trouvé de *.o dans l'archive d'origine.

    Pour l'urgence, libre à toi, je ne suis pas encore sur le point de rendre l'âme mais si tu trouve la bonne action à mener ... un petit pas pour l'homme ...

  10. #10
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Hep (je dis Hep, parce que ça rime avec Yep)

    Alors oui, c'est normal qu'il n'y ait pas de fichier *.o dans ton archive, pas plus que dans la mienne, parce que ces composants sont fournis par un autre paquet. Regarde ici
    Télécharger les modules de Fast Artificial Neural Network Library sur SourceForge.

    Je n'ai pas trouvé de binaires, et il n'y a que les sources en C, que tu dois donc compiler toi-même pour ta plateforme. Mais comme tu te débrouille déjà bien à ce que je vois, alors ça devrait aller, d'autant que dans cette archive, tu as des sous repertoires contenant des procédures d'installation pour différentes distributions d'Unix-like (il y a Debian)

    Alors, c'est la version 2 béta, mais ne t'inquiète pas que ce soit en béta, et de toute façon tu es obigé de prendre la version 2, parce que c'est sur cette version qu'est basé ton binding Ada.

    C'est effectivement un biding, et non pas du pure Ada, comme disait Promu@Id. Il en est question ici
    Fann Binding too Ada (il est rigolo, il a fait une faute d'orthographe volontaire je crois)

    Donc essais de compiler le paquet aprés l'avoir téléchargé de SourceForge, et si tu rencontre des soucis, je peux essayer de le compiler chez moi (j'ai une petite installation de Linux sur une vieille machine)

    Donne moi des news

    Note: un biding, c'est une sorte de wrapper... on en parlait ici, dans les derniers posts de ce fil : généricité et types privés
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  11. #11
    Invité
    Invité(e)
    Par défaut


    Yep,

    j'ai chargé, compillé, mis en place quelques liens ..... et ça roule !

    Merci Hibou57

    A +

  12. #12
    Inactif Avatar de Hibou57
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    852
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 852
    Points : 493
    Points
    493
    Par défaut
    Yep Youpi!

    ... n'oubli pas de mettre le tag résolu maintenant (le bouton en bas de la page)

    A une prochaine Jovalise, et au plaisir de te lire ici
    ------------------------------------------------------------
    Sur le web, c'est la liberté qui est gratuite, mais bien évidement pas la consomation ... et encore moins la consomation à outrance
    ------------------------------------------------------------
    Language shapes the way we think, and determines what we can think about [ B. Lee Whorf ] ... mais ce n'est pas tout à fait vrai à 100%...
    ------------------------------------------------------------
    Pascal (FreePascal?) - Ada (Gnat-3.15p)
    XSLT (XSLTProc) - CGI binaires (Ada/C) [ Clavier Arabe ]
    ------------------------------------------------------------

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Hibou57 Voir le message
    Yep Youpi!

    ... n'oubli pas de mettre le tag résolu maintenant (le bouton en bas de la page)

    A une prochaine Jovalise, et au plaisir de te lire ici

    Yes, je push le bouton immédiatement.

    Au plaisir, merci encore.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/12/2007, 21h54
  2. Problème de liaison avec sous-requêtes
    Par piziwate dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/10/2007, 13h23
  3. Réponses: 1
    Dernier message: 09/10/2007, 06h44
  4. Problème à la liaison avec LMDTools SE et Builder 2006
    Par Bodom-Child dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/02/2007, 15h11
  5. 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

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