[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:40458] Re: libpetsc2.1.6の複素数用サンプルのコンパイルについて



>>島田さん

お返事ありがとうございます。uedaです。

>  そのライブラリは使ったことがないのですが、メッセージを見ると C 言語な
> のに C++ 言語の構文である template を使っている、というエラーのようです。
>  ex11.c という名前からすると、問題のプログラムは C 言語で書かれているの
> ですよね。
>  C 言語のプログラムをコンパイルして、インクルード・パスとして 
> /usr/include/c++ を見に行くのはおかしいです。Makefile などをみて、そのあ
> たりを調べてみると解決できるかもしれません。

ご指摘ありがとうございます。おっしゃるとおり、ソースはC言語で書かれてい
ます。
私としては数値計算の中で、連立方程式を解く部分だけをこのライブラリにやっ
てもらいたいと思いまして、ブラックボックス的に使おうと思っていたのですが
甘かったです。

ライブラリ自体はC++で記述されていて、呼び出すコードはC、C++、F90のどれで
も良いということだったので、まずはとりあえず付属のサンプルを試してみた次
第です。

妙に分厚いマニュアルやFAQをいろいろ調べていたのですが、現在疑っているのは
1) Debian パッケージで配布されているのは複素数非対応版
2) 新しめのgccで複素数を計算する場合は設定ファイルの修正がいる

ということでした。2)はFAQに以下のようにあったので

# Symptom: with recent versions of G++ compiler
libfast in: /tmp_mnt/home/schwarz/cai/petsc-2.0.14/src/is/interface
In file included from ../../../include/petsc.h:112, from
../../../include/is.h:9, from ../isimpl.h:13, from index.c:7:
../../../include/options.h:12: type specifier omitted for parameter
../../../include/options.h:12: parse error before `*'

Problem: Gnu completely changed the way it does complex numbers now. It
uses a templated complex class.

Cure: In petsc/bmake/PETS_ARCH/variables add -DUSES_TEMPLATED_COMPLEX to
the line defining   GCOMP_PETSCFLAGS and  OCOMP_PETSCFLAGS. -

言われるままに修正してみましたが、今度はC++のライブラリのエラー以前に止
まってしまいました。

これからアドバイス頂いたMakefileについても調べてみます。
Debianは数値計算で使っている方も多いしとても使いやすいと聞いて最近RPM系
から移行した上に、基本的にFortranを少しと、MATLABを使っているだけでし
て、C言語およびLinuxは全く素人なため、くだらない質問をしてしまい申し訳あ
りません。

なにか進展がありましたら御報告致します。
ありがとうございました。



ueda