2016-03-29 45 views
0

Lapack alt yordamlarını kullanan ve Ubuntu sistemimde başarıyla çalışan bir Fortran 90 programım var. Şimdi Mac'te çalıştırmak istiyorum (OS X Sürüm 10.11.4). Ben ghostran derleyicisini,/usr/local/lib/dizininde kurulu olan homebrew depolarından ve lapack kütüphanesinden kurulu gcc'nin bir parçası olarak kullanıyorum. Sorunun bağlama nedeni anlaşılmaktadır bazı google arama sonraLapack ve fftw3 kitaplıklarını bağlarken sorun

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 

: Ben kodumu derlemeye çalıştığınızda , aşağıdaki hatayı alıyorum. Ben böyle derlemek zaman, herşey iyi çalışıyor: çerçeve hızlandırmak dan llapack kullanıldığında

gfortran my_prog.f90 -llapack 

Ayrıca derleyici şikayet etmiyor.

gfortran my_prog.f90 -framework accelerate 

kütüphaneler x86-64 mimarisi şunlardır:

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, bana bir hata verir sonra aynı sorun FFTW3 ile görünen tek değil. Bu sorunun çözümü için bana bir ipucu verebilir misiniz?

+0

'daxpy' ve' ztrmv', lap belleğinin değil, parça kitaplığının parçalarıdır. Bu nedenle, -llapack -lblas'ı yaparak Blas'a karşı bağlantı kurmayı dener misiniz? – francis

cevap

0

FFTW, accelerate framework'un bir parçası değildir. Kullanmak isterseniz, derleme seçeneklerine de -lfftw3 eklemeniz gerekir.

Kitaplıklar varsayılan LIBRARY_PATH değilse, -L/path/to/fftw/libs belirtmeniz gerekebilir. Aynı şey, -I/path/to/fftw/includes modüllerini kullanıyorsanız, içerme yolu için de geçerlidir.

Kitaplığın vDSP bölümünün de FFT implementations sağladığını unutmayın. FFTW'ye hiç ihtiyacınız olmayabilir.