2016-03-29 27 views
0

lapackサブルーチンを使用するFortran 90プログラムがあり、私のUbuntuシステムで正常に動作しています。今はMac(OS Xバージョン10.11.4)で実行したいと思っています。私は、ホームビルドリポジトリからインストールされたgccの一部としてgfortranコンパイラを使い、/ usr/local/lib /にインストールされているlapackライブラリを使用しています。私は、問題は連結ためであることを理解いくつかのGoogle検索後lapackライブラリと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 

:私は私のコードをコンパイルしようとすると は、私は次のエラーを取得します。私はこのようにそれをコンパイルすると、すべてがうまく機能:

gfortran my_prog.f90 -llapack 

枠組み加速からllapackを使用した場合も、コンパイラは文句はありません。

gfortran my_prog.f90 -framework accelerate 

ライブラリは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は、後に同じ問題がFFTW3が表示され、私にエラーを与えるだけではありません。あなたは私にこの問題の解決策のヒントを教えてください。

+0

'daxpy'と' ztrmv'はBlasライブラリの一部であり、lapackではありません。したがって、 '-llapack -lblas'を実行してBlasとリンクすることはできますか? – francis

答えて

0

FFTWは​​の一部ではありません。それを使用する場合は、-lfftw3をコンパイルオプションにも追加する必要があります。

ライブラリがデフォルトのLIBRARY_PATHにない場合は、-L/path/to/fftw/libsも指定する必要があります。モジュールを使用している場合は、同じことがインクルードパスにも適用されます-I/path/to/fftw/includes

ライブラリーのvDSP部分には、FFT implementationsも含まれています。 FFTWはまったく必要ないかもしれません。

関連する問題