svml
まったく新しい Cygwin インストールで Fortran コードをコンパイルする際に問題が発生しています。これは、Intel (Short Vector Math Library) ライブラリ内の関数への未定義の参照にまでさかのぼることができます。
具体的には、フォームのエラーが発生しています
import_gamess.o:import_gamess.f90:(.text+0xb58b):
undefined reference to `vmldPow2'
ここに示すように、関数vmldPow2
はsvml
ライブラリの一部であり、makefile で gfortran のオプションとして次のように渡します。
F90 = gfortran -m64 -msse2 -O3 -march=native -mtune=native -fopenmp \
-ffast-math -fassociative-math -freciprocal-math -ffinite-math-only \
-fno-signed-zeros -fno-trapping-math -msahf -mmovbe -mrecip \
-mveclibabi=svml -ftree-vectorize -fexternal-blas
-fblas-matmul-limit=50 -static
(ライブラリlapack
とも使用していますlblas
。)
このファイルは、Windows 7 で Cygwin 1.7.17 を実行している私のラップトップで正常にコンパイルされました。 、同じく Windows 7 を実行しており、Cygwin 1.7.25 がインストールされています。32 ビットと 64 ビットの両方のインストール (それぞれ gfortran 4.7.3 と 4.8.1 で実行)、およびデスクトップに 64 ビットの Cygwin を新規インストールすると、上記のエラーが発生します。また、同じデスクトップで Linux を起動してもエラーは発生しませんが、現時点ではエラーにはなりません。
svml
新しい Cygwin のインストールでは、(a)へのリンクが壊れているか、(b) そのライブラリの欠落している部分があることは明らかです。私はそのライブラリを元に戻す方法をできる限り広範囲に検索しましたが、GNU コンパイラの本質的な部分のようです。実際、GNU コンパイラはこのライブラリのサポートをやめたのでしょうか? そうでない場合は、ライブラリまたはライブラリにリンクしているファイルを修復する必要があると思います。その場合、このライブラリはどこで利用できますか? どのファイルをどのように修復する必要がありますか?
ただし、私が間違ったツリーを吠えている可能性が明確にあることは認識しています。どこを見ればいいですか?