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 :

compilation par gfortran


Sujet :

Fortran

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Par défaut compilation par gfortran
    Bonsoir,
    je suis un peu surpris du comportement de gfortran (linux).
    j'écris un programme (testfortran.F) tout simple en fortran 77.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
          PROGRAM t2
          IMPLICIT NONE
          INTEGER info
     
          info = 0
     
          PRINT*,'test', info, '\n'
     
          END
    je le compile comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gfortran -o tf testfortran.F
    ==>pas de problème.

    pour une raison obscure je souhaite proposer des répertoires pour inclure des librairies(alors que mon programme n'en a pas besoin).
    Si je propose un répertoire où je n'ai pas de librairie statique, pas de problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gfortran -L../rep/pasdelibstatique -o tf testfortran.F
    si dans ce répertoire se trouvent des lib statiques :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gfortran -L../rep/meslibstatiques -o tf testfortran.F
    je me retrouve avec l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /tmp/ccMCuVdA.o: In function `MAIN__':
    testfortran.F:(.text+0x16): undefined reference to `_gfortran_set_options'
    /usr/lib/gcc/x86_64-linux-gnu/4.4.1/libgfortranbegin.a(fmain.o): In function `main':
    (.text+0x17): undefined reference to `_gfortran_store_exe_path'
    collect2: ld returned 1 exit status
    Quelqu'un peut-il m'expliquer la logique ?
    Merci beaucoup ...

  2. #2
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    as-tu essayer en deux étapes (d'abord compilation puis édition de lien)?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gfortran -c testfortran.f
    gfortran -o tf testfortran.o -L../rep/meslibstatiques
    voilà ce qui est marqué dans la notice du compilateur:
    These options affect how GNU Fortran searches for files specified by the INCLUDE directive
    and where it searches for previously compiled modules.
    It also affects the search paths used by cpp when used to preprocess Fortran source.
    -Idir These affect interpretation of the INCLUDE directive (as well as of the #include
    directive of the cpp preprocessor).
    Also note that the general behavior of ‘-I’ and INCLUDE is pretty much the
    same as of ‘-I’ with #include in the cpp preprocessor, with regard to looking
    for ‘header.gcc’ files and other such things.
    This path is also used to search for ‘.mod’ files when previously compiled modules
    are required by a USE statement.
    See Section “Options for Directory Search” in Using the GNU Compiler Collection
    (GCC), for information on the ‘-I’ option.
    -Jdir
    -Mdir This option specifies where to put ‘.mod’ files for compiled modules. It is also
    added to the list of directories to searched by an USE statement.
    The default is the current directory.
    ‘-M’ is deprecated to avoid conflicts with existing GCC options.
    -fintrinsic-modules-path dir
    This option specifies the location of pre-compiled intrinsic modules, if they are
    not in the default location expected by the compiler.
    mais cela concerne la compilation, pour l'édition de liens (et donc l'inclusion de librairies), je pense que tu dois avoir une lib qui met en vrac ton linking...

    essaye de prendre ton répertoir vide et de rajouter une par une les lib de l'autre rep pour savoir laquelle fait tout planter...

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Par défaut
    Merci beaucoup !
    Effectivement, j'ai trouvé la librairie qui faisait foirer.
    Maintenant c'est ok.
    Mais j'aimerais comprendre quand même ce que fait exactement ce -L.
    d'apres la doc de gcc,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           -Ldir
               Add directory dir to the list of directories to be searched for -l.
    je ne vois pas pourquoi une librairie non appelée (par -l) ferait une erreur ....

  4. #4
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut
    gfortran appelle certaines librairies de manière transparente comme libgfortran.a par exemple.... si tu donne un rep avec -L ce rep sera utilisé en priorité (avant les rep par défaut) et si tu as des libs dedans il peut vouloir les charger sans pour autant les avoir spécifié par un -l...

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 76
    Par défaut
    D'accord, c'était bien libgfortan.a qui faisait foirer le truc , merci beaucoup pour cette explication !

Discussions similaires

  1. Problème de compilation avec gfortran et pas ifort
    Par Ladgalen dans le forum Fortran
    Réponses: 2
    Dernier message: 22/02/2008, 11h38
  2. Intégrer du code compilé par GWT dans une page html
    Par leynilegur dans le forum GWT et Vaadin
    Réponses: 5
    Dernier message: 26/08/2007, 21h27
  3. Réponses: 3
    Dernier message: 06/09/2006, 11h57
  4. Réponses: 3
    Dernier message: 14/04/2006, 10h43
  5. Compilation par ligne de commande
    Par Dupont Lionel dans le forum MFC
    Réponses: 2
    Dernier message: 21/10/2005, 13h29

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