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

Linux Discussion :

Problème de compilation d'un code Fortran en 64 bits


Sujet :

Linux

  1. #1
    Anonyme2
    Invité(e)
    Par défaut Problème de compilation d'un code Fortran en 64 bits
    Bonjour à tous !

    Dans le cadre de mon travail de thèse, j'utilise le logiciel REFPROP publié par le NIST (National Institute of Standards and Technology, organisme de normalisation américain). Ce dernier permet le calcul de caractéristiques thermodynamiques de fluides et de mélanges de fluides. Les routines de calcul de ce logiciel, publié pour Windows, sont écrites en Fortran et fournies avec le logiciel. Cela permet notamment de les utiliser directement dans des logiciels "maison", d'y faire appel sous la forme d'une librairie dans d'autres logiciels (exemple: dll dans excel), etc...

    Pour ma part, je souhaite utiliser ces routines sous MatLab (ou idéalement, Octave...). Dans les exemples d'utilisation des routines du soft, figure un exemple, rédigé en Fortran, servant à compiler un binaire utilisable par MatLab.

    Pour compiler un binaire pour MatLab, il est nécessaire d'utiliser l'utilitaire mex qui fait lui-même appel au compilateur nécessaire. Pour ma part, en Fortran, ce compilateur est g95, configuré comme il suit.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    FC='g95'
    FFLAGS='-fexceptions -ffree-form -ffixed-line-length-none'
    FFLAGS="$FFLAGS -fPIC"
    FLIBS="$RPATH $MLIBS -lm"
    FOPTIMFLAGS='-O'
    FDEBUGFLAGS='-g'
    Notez que le résultat de la compilation est le même si le compilateur est appelé directement avec les options ci-dessus.

    Le code Fortran se compile très bien sur une architecture 32 bits avec le compilateur g95, sur Linux. Il fonctionne ensuite parfaitement sur MatLab.

    La commande de compilation utilisée est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mex refpropm.f90 ./fortran/*.FOR
    Au passage sur une architecture 64 bits, la même version de g95, mais pour 64 bits, retourne l'erreur suivante à la compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ld: /tmp/ccC8hq9B.o: relocation R_X86_64_32S against `a local symbol'
    can not be used when making a shared object; recompile with -fPIC
    /tmp/ccC8hq9B.o: could not read symbols: Bad value
     
    mex: link of 'refpropm.mexa64' failed.
    Savez-vous d'OU vient ce type d'erreur et quelle est la voie pour la corriger ?

    Références :
    Plus d'information sur le logiciel REFPROP
    Plus d'information sur le NIST

    EDIT: Je ne peux utiliser un autre compilateur pour des raisons de compatibilité avec MatLab. Par exemple, gfortran, intégré à gcc, n'est pas valable pour mon application

  2. #2
    Expert éminent sénior

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    ben d'une part ils te disent d'utiliser l'option -fPIC, mais d'autre part il faidrait regadre la doc du compilo (l'aide) dont tu te sers. Il doit y avoir un flag à ajouter pour du 64..

Discussions similaires

  1. Problème de compilation pour un code correct
    Par iliaseyah dans le forum Access
    Réponses: 7
    Dernier message: 19/06/2015, 16h23
  2. Problème de compilation C avec Code::Blocks
    Par Onimanta dans le forum Débuter
    Réponses: 14
    Dernier message: 14/04/2011, 08h03
  3. Réponses: 5
    Dernier message: 09/04/2006, 19h02
  4. Réponses: 8
    Dernier message: 01/06/2005, 09h45
  5. [Fortran 77] Problème de compilation
    Par Kenji dans le forum Fortran
    Réponses: 26
    Dernier message: 23/05/2005, 16h07

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