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

Fortran Discussion :

Utilisation d'une librairie Fortran


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut Utilisation d'une librairie Fortran
    bonjour,

    je connais +/- bien le fortran90 et je travail avec le compilateur gfortran. Je ne connais que la ligne :
    gfortran -o (programme) (programme).f90
    je dois utiliser une sous-routine d'une bibliothèque (bib.a). Pour info, la bib ne contient aucun module dans son code source.

    Mes 2 questions :
    quelle ligne dois-je utiliser pour compiler mon programme ?
    dois-je écrire une/des ligne(s) dans le code source de mon programme pour annoncer au compilateur l'existence de la dite bibliothèque ?

    je n'ai jamais utiliser de bibliothèque auparavant...
    merci d'avance

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Pour la phase de compilation, qualifie d'external les sous-routines que tu utilises mais qui ne sont pas dans le meme fichier source (donc celles inclues dans ta bibliotheque).
    Pour la phase d'edition de lien, gfortran utilise les memes options que gcc, donc pour lier a la bibliotheque /path/to/my/lib/libsomething.a, les options sont:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    -lsomething -L/path/to/my/lib

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    merci pour ta réponse,

    j'ai fini par trouver quelques explications supplémentaires concernant les librairies sur http://c.developpez.com/tutgcc/c559.php

    cependant, même si je sais maintenant compiler ma propre bib. J'arrive pas à l'utiliser... voici ce qui se passe dans la fenêtre de mon terminal (je précise que libperso1 se trouve dans le même répertoire que alpha_n.f90, i.e. le répertoire courant dans ce cas-ci) :

    alix@alix:~$ cd these
    alix@alix:~/these$ cd Programmes/
    alix@alix:~/these/Programmes$ gfortran -o alpha_n alpha_n.f90 -llibperso1.a
    /usr/bin/ld: ne peut trouver -llibperso1.a
    collect2: ld returned 1 exit status
    alix@alix:~/these/Programmes$ ld libperso1.a
    ld: AVERTISSEMENT: ne peut trouver le symbole d'entrée _start; pas d'initialisation de l'adresse de départ
    pq ça marche pas ? c'est quoi cette histoire de _start ??
    merci d'avance

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par alexiel_ad Voir le message
    je précise que libperso1 se trouve dans le même répertoire que alpha_n.f90, i.e. le répertoire courant dans ce cas-ci
    Il faut tout de meme preciser le repertoire, et tu n'utilises pas -l comme indique dans la documentation et dans ma reponse precedente.
    Voici la ligne de commande corrigee:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran -o alpha_n alpha_n.f90 -lperso1 -L.
    Cela devrait marcher.

    c'est quoi cette histoire de _start ?
    Pour simplifier, _start est le symbole qui donne le point d'entree du programme. Pour creer un executable, l'editeur de lien (ld, dans ton cas) a besoin d'un point d'entree (le debut du programme). En Fortran, le point d'entree est dans le fichier source principal contenant le mot-cle program. Evidemment, ta bibliotheque n'a pas de point d'entree, puisqu'elle est concue pour etre ajoutee par l'editeur de lien pour former l'executable final. La reaction de ld est donc normale.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 7
    Par défaut
    tout de suite, ça marche mieux...

    désolé, j'ai cru le -L optionnel dans le cas où la lib se trouve dans le m^ dossier que le fichier source du programme. J'avais pas compris le -l(nom de la bib sans le préfixe lib) non plus.

    merci pour l'explication du _start et pour le reste.

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

Discussions similaires

  1. Utilisation d'une librairie Fortran
    Par Kuroro dans le forum C++
    Réponses: 16
    Dernier message: 26/11/2007, 18h54
  2. [FB] utilisation d'une librairie C/C++
    Par dug dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/10/2006, 22h05
  3. [GD] Utilisation d'une librairie equivalente à Gd/installation sans reboot du serveur
    Par hokidoki dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 21/07/2006, 15h22
  4. Utilisation d'une librairie
    Par LordBob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/07/2006, 14h06
  5. Réponses: 4
    Dernier message: 13/10/2005, 12h41

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