寺尾@大阪学院大学(初投稿) です Vine3.1を使っております。 ほかのディストリビューション上で構築したoctaveを用いた科学技 術計算用のc++プログラムを、Vine3.1上で利用しようとして問題に 遭遇しました。 このプログラム hoge.cc(仮名) 自体は、octave の c++ クラスを 用いてそのメソッドを呼び出すものです。倍精度複素数配列クラス である ComplexMatrix を利用しており、その連立一次方程式の求 解メソッド solve を利用しています。 どうも g++-3.3.2 では octave のヘッダファイル読み出し中に莫 大なエラーが出るので、g++-2.95.3 を用いて作業をしました。ま た、readlineについてはどうも4.1でないといけないようなので、 readline41というパッケージををインストールして /usr/lib/libreadline.so.4.1 を用いるようにしています。 発生した問題は、kpse_clear_dir_cache というシンボルがないと 怒られてリンクに失敗する、というものです。kpse_... というシ ンボルは libkpathsea にたくさんあるのですが、 kpse_clear_dir_cache というものは見あたりません。ほかのどこ かにあるかと探してみたのですが、見つかりませんでした。仕方が ないので、同名の何もせずabortする関数を定義して乗り切りまし たが、本当はどうするべきだったのでしょう? octave のバージョンは パッケージ:octave-2.0.17-0vl1 kpathsea は tetex 中に入っているもので パッケージ:tetex-2.0.2-0vl14 ライブラリ:libkpathsea.so.3.4.5 g++ のバージョンは パッケージ:gcc295-c++-2.95.3-2vl24 g++-2.95.3:gcc version 2.95.3 20010315 (release) です。 具体的な結果は以下の通り。 --------- [terao@r3 Analysis]$ g++-2.95.3 hoge.cc -I/usr/include/octave-2.0.17 -L/usr/lib/octave-2.0.17 -loctave -lcruft /usr/lib/libreadline.so.4.1 -ldl -llapack -lblas -lkpathsea -lg2c -lcurses /usr/lib/octave-2.0.17/liboctave.so: undefined reference to `kpse_clear_dir_cache' collect2: ld returned 1 exit status --------- liboctave.so にある kpse_... 呼び出しは、 nm してみると --------- U kpse_all_path_search U kpse_clear_dir_cache U kpse_element_dirs U kpse_expand_default U kpse_path_element U kpse_path_expand U kpse_path_search U kpse_set_program_name --------- の8つでした。libkpathsea.so.3.4.5 には、上記のうち kpse_clear_dir_cache をのぞく7つについてはシンボルが定義さ れています。 この問題は既知の問題なのでしょうか? 正しい対処法をご存じの 方はご教示くださいますと助かります。 いろいろ検索したりしたので、FAQ ではないだろうとは思っている のですが... もし FAQ でしたら申し訳ありません。 -- Toru Terao <terao@xxxxxxxxxxxxxxxx>