2009-08-07 24 views
1

PARDISOを使用して線形システムソルバをコンパイルしようとしています。 テストケース(pardiso_sym.c)も上記の同じWebサイトからダウンロードしました。GCCでPARDISOリニアソルバテストケースをコンパイル

私はディレクトリ内に以下のファイルがあります。

[[email protected] my-pardiso]$ ls -lh 
total 1.3M 
-rw-r--r-- 1 gv hgc0746 1.3M Aug 7 11:59 libpardiso_GNU_IA64.so 
-rw-r--r-- 1 gv hgc0746 7.2K Nov 13 2007 pardiso_sym.c 

その後、私は、次のコマンドでそれをコンパイルしよう:

[[email protected] my-pardiso]$ gcc pardiso_sym.c -o pardiso_sym -L . -llibpardiso_GNU_IA64.so -L/home/gv/.boost/include/boost-1_38 -llapack 

しかし、それは、このエラーを与える:

/usr/local/lib/gcc/x86_64-unknown-linux-gnu/4.3.2/../../../../x86_64-unknown-linux-gnu/bin/ld: 
cannot find -llibpardiso_GNU_IA64.so 
collect2: ld returned 1 exit status 

私の編集方法に何が問題なのですか?

[[email protected] my-pardiso]$ uname -a 
Linux gw05 2.6.18-92.1.13.el5 #1 SMP Wed Sep 24 19:32:05 EDT 2008 
x86_64 x86_64 x86_64 GNU/Linux 

[[email protected] my-pardiso]$ gcc --version 
gcc (GCC) 4.3.2 

更新

これは私のシステムの追加情報があるデイブ・ギャンブルの提案を使用して

ライブラリを認識されています。

$ gcc pardiso_sym.c -o pardiso_sym -L . -lpardiso_GNU_IA64 -L/home/gv/.boost/include/boost-1_38 -llapack 
./libpardiso_GNU_IA64.so: undefined reference to `s_stop' 
./libpardiso_GNU_IA64.so: undefined reference to `s_wsfe' 
./libpardiso_GNU_IA64.so: undefined reference to `e_wsfe' 
./libpardiso_GNU_IA64.so: undefined reference to `z_abs' 
./libpardiso_GNU_IA64.so: undefined reference to `s_cat' 
./libpardiso_GNU_IA64.so: undefined reference to `s_copy' 
./libpardiso_GNU_IA64.so: undefined reference to `do_fio' 

答えて

2

EDIT:しかし、今では異なる エラーを与える私はPARDISOマニュアルをお読みください。ここで修正です:

gcc pardiso_sym.c -o pardiso_sym -L . -lpardiso_GNU_IA64 -L/home/gv/.boost/include/boost-1_38 -llapack 

ここで私は-lpardiso_GNU_IA64

+0

@DG:ありがとうございました。しかし、それでも同じエラーが出ます。 – neversaint

+0

@DG:もう一度ありがとう。今それはlibを認識します。新しいエラーの原因は何でしょうか(アップデートを参照) – neversaint

2

EDITの端から開始し、「.soは」から「LIB」を削除しました:あなたが必要とする新しいエラーの場合 - -lapack(fortran互換ライブラリ)のあとlg2c

EDIT2: また、-lgfortranと必要なものを追加します。不足しているシンボルのためのグーグルリングは通常それに含まれるライブラリの言及を見つけます。すべての依存関係が満たされるまで、ライブラリを1つずつ追加し続けます。

だからあなたの場合には、ルーチンは、このようなものです:

リンクLAPACK - G2C

追加G2Cから未解決のシンボルを持って - のgfortranを追加したのgfortran

からシンボルを得た - いくつかの他のシンボルを得ましたそれらを見て、1つずつlibsを追加してください。

Librayの順序は重要です。例えば、lapakの前にg2cを含めると、リンカーはlapakに必要なことを知る前にすべてのシンボルを捨てます(MSリンカーはこれを修正するために2回のパスを行います)。だからすでにあなたが含んでいるライブラリにある欠けているシンボルが見えるなら、どのライブラリがそれを必要としているかを見て、そのシンボルを持つlibをそれの後ろに移動してください。

+0

lsをチェックすると、それはCWDにあり、彼は-Lです。 –

+0

@Eugene:私は何もインストールしませんでした。私はちょうどその "so"ファイルをダウンロードします。ここから:http://pardiso-project.org/download/ab6ex6hze7cvjhuz04/ – neversaint

+1

ええ、私はそれを後で見ました。試してみてください。しかし、スペースなしで。 – Eugene

関連する問題