2016-10-19 3 views
0

LAPACK/BLASライブラリを必要とするCコードをコンパイルする際に問題が発生しています。`zgesvd_ 'への未定義参照 - CコンパイルにおけるBLASの問題

私は「作る」を実行する際の問題は、ある、私が取得:

file.c:(.text+0x1c41): undefined reference to `zgesvd_' 
file.c:(.text+0x1c9c): undefined reference to `zgetrf_' 
../file.a(SpatialOrientation.o): In function `myfunction.c':myfunction.c:(.text+0x7be): undefined reference to `dsyev_' 

および他のいくつかのような行、すべて同様の欠落参照を参照。

私はこのエラーをBLASと何かに追いかけました。私はthis excellent linkの指示に従ってBLASをインストールし、関連するディレクトリをパスに入れました。私はまた、これらのライブラリを見つけるために私のMakefileを変更しました。

本当にありがとうございます。

更新するには、私は最近、itppもインストールしました。また、hereの指示に従っています。私の欠けている参照がそれにリンクされているように思われたからです。これまでの変更はありません...

ありがとうございます!

答えて

1

問題は解決しました。やめ!

1)は、LAPACKおよびBLASライブラリを作るためにhereを与えられた指示に従ってください:私はちょうどここに私がやったことで、同じ問題を抱えている人のために

...私のオフィスの周りに踊りました。 )

wget http://www.netlib.org/lapack/lapack.tgz 
tar xvzf lapack.tgz 
cd lapack-3.3.0 //if version number changes, change here to the right directory 
mv make.inc.example make.inc 

2)次に、(重要なビットは、またhereをお勧めします:

編集make.incおよびFortranコンパイラに-m64 -fPICフラグを追加科学的なLinuxの6機のために、言い換えために、彼らはありますオプション:FORTRAN、OPTS、nooptを、今後LOADER

make blaslib 
make 

は、/lapack-3.6.1で、(または任意のディレクトリには、このプロセスの後に呼ばれる)あなたが持っているものさ2つのファイル:

librefblas.a、およびliblapack.a。

3)私は次のことは、いくつかのサブディレクトリにlibrefblas.aとliblapack.aコピーすることだった - つまり、/ libに/ liblapack librefblas.a

4用および/ libに/ libblas liblapack.a用)すると

LIBDIR1 = /path/lib/lapack 
LIBDIR2 = /path/lib/blas 

LIBS = -L$(LIBDIR1) -llapack -L$(LIBDIR2) -lblas $(SYSLIBS) 
LIBSMPI = -L$(LIBDIR1) -llapack -L$(LIBDIR2) -lblas $(MPILIBS) $(SYSLIBS) 

Iも追加/パス/ libに/ LAPACKおよび/パス/ libに/ BLAS私のLD_LIBRARY_PATHへ(およびPATH、ジャスト・イン・ケース...):このように、あなたのメイクファイルでこれらのディレクトリを置きます

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/lib/lapack:/path/lib/blas 
export PATH=$PATH:/path/lib/lapack:/path/lib/blas 

次に、Makefileがどこにあるのかを入力して、

make 

yay yay yayを入力してください。

ところで、ステップ1)で得られた最新のlapackとblasを使って、gccバージョン5.1.0と対応するmpicc(openmpi 1.10)をコンパイルしました。2)。

これは他の誰かを助け、絶対的な喜びを分かち合うのを願っています。

関連する問題