J'ai un programme Fortran 90 qui utilise des sous-programmes lapack et fonctionne avec succès sur mon système Ubuntu. Maintenant, je veux l'exécuter sur Mac (OS X Version 10.11.4). J'utilise le compilateur gfortran dans le cadre de gcc, installé depuis les dépôts homebrew, et la bibliothèque lapack, installée dans/usr/local/lib /. Quand je tente de compiler mon code, je reçois l'erreur suivante:Problème lors de la liaison des bibliothèques lapack et fftw3
gfortran my_prog.f90 -L/usr/local/lib/ -llapack
Undefined symbols for architecture x86_64:
"_daxpy_", referenced from:
_zggbal_ in liblapack.a(zggbal.o)
...
"_ztrmv_", referenced from:
_zlarft_ in liblapack.a(zlarft.o)
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
Après une recherche google, je compris que le problème est parce que la liaison. Quand je compile comme ça, tout fonctionne bien:
gfortran my_prog.f90 -llapack
également lorsque llapack du cadre Accelerate est utilisé, le compilateur ne se plaint pas.
gfortran my_prog.f90 -framework accelerate
Les bibliothèques sont de l'architecture x86-64:
lipo -info *.a
input file libfftw3.a is not a fat file
input file liblapack.a is not a fat file
Non-fat file: libfftw3.a is architecture: x86_64
Non-fat file: liblapack.a is architecture: x86_64
LAPACK est pas le seul qui me donne une erreur, plus tard, le même problème apparaît avec FFTW3. Pourriez-vous s'il vous plaît me donner un indice pour la solution à ce problème?
'daxpy' et' ztrmv' font partie de la librairie Blas, pas lapack. Par conséquent, pourriez-vous essayer de lier contre Blas en faisant '-llapack -lblas'? – francis