namazu-ml(ring)


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

Re: Text::kakasi/mknmz/perl (1.4.0.0-beta-8)core dumps



こんにちは、白井です。

From: "yoshihide hirose" <yoshihide@xxxxxxxxxx> さん曰く
Subject: [namazu 749] Re: Text::kakasi/mknmz/perl (1.4.0.0-beta-8)co
Message-ID: <199906010724.QAA10626@xxxxxxxxxxxxxx>
Date: Tue, 1 Jun 1999 16:25:08 +0900

knok> libkakasiを生成したときにコンパイラやコンパイルスイッチは
knok> 何を指定されましたでしょうか?

廣瀬> gcc 2.8.1で、デフォルトのままです。

% gcc -v
Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.4/egcs-2.91.60/specs
gcc version egcs-2.91.60 19981201 (egcs-1.1.1 release)

です。switch は デフォルトと -fPIC, -fpic 付きでやってみたのです
が、だめでした。また、Solaris 附属の ld を使うために

libkakasi.so: $(LIBOBJECTS)
	$(LD) -dy -G -I libkakasi.so.2 -o libkakasi.so.2 $(LIBOBJECTS) -lc
###	$(LD) -shared -soname libkakasi.so.2 -o libkakasi.so $(LIBOBJECTS) -lc

とかもやっています。./configuer & make の生活になれてしまってい
るので、このあたり良くわからないのですが、思考錯誤の結果です。^^;;;

だけど、libkakasi.a を直接以下の様に link して、

% gcc -g -o zzz zzz.c /usr/local/lib/libkakasi.a

--- zzz.c ---
#include <stdio.h>
#include <libkakasi.h>

main(argc, argv)
     int argc;
     char **argv;
{
  /* char *arg[] = {"kakasi", "-JH"}; */
  char *arg[] = {"kakasi", "-w", "-ieuc", "-oeuc"};
  /* char *arg[] = {"kakasi", "-ijis", "-oeuc"};
     これだけは日本語も動いた。*/
  int argcount = 4;
  char *res;
  int i;
  
  i = kakasi_getopt_argv(argcount, arg);
  fprintf(stdout, "getopt: %d\n", i);
  fprintf(stdout, "str: %s\n", argv[1]);
  res = kakasi_do(argv[1]);                     <== ここで core dump
  fprintf(stdout, "Res: %s\n", res);
  i = kakasi_close_kanwadict();
  fprintf(stdout, "close: %d\n", i);
}
--- zzz.c ---

としてもだめだったので、$(LD) の問題では無いような感じです。

# こんな試験(zzz)でいいのですか? それ以前にこれって動いているの
# かしら? `C' で日本語扱ったこと無いものでして……

入力に ASCII 文字列を指定したときは、動作しますが、

% ./zzz 本日は晴天なり
getopt: 0
str: 本日は晴天なり
Segmentation fault (core dumped)

となり、

% gdb ./zzz core
 *** 古すぎるぞ gdb4.9 ***
Core was generated by `./zzz 本日は晴天なり'.
Program terminated with signal 11, Segmentation fault.
#0  0xef61751c in jisyo_table ()
(gdb) where
#0  0xef61751c in jisyo_table ()
#1  0xef64ee2c in jisyo_table ()
#2  0xef659bb0 in jisyo_table ()
#3  0x11a50 in main (argc=<error type>, argv=0xeffff39c) at zzz.c:20

な感じです。

From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu) さん曰く
Subject: [namazu 748] Re: Text::kakasi/mknmz/perl (1.4.0.0-beta-8)core dumps
Message-ID: <199906010610.PAA07471@xxxxxxxxxxxxxx>
Date: Tue, 1 Jun 99 15:08:01 JST

knok>   あと藤原さんもちょっとお願いしたいのですが、Text::Kakasiをmakeした時
knok> のログを見せて頂けませんでしょうか。perl Makefile.PLを実行したときに
knok> -fpicもしくは-fPICのどちらを付加してコンパイルを行うのか確認したいので。

御参考までに、私の場合、

Perl 5.004_02 => -fpic
Perl 5.005_02 => -fPIC

になっていました。


しかし、思いっきりとりあえずなのですが、

廣瀬> 僕の使っているText::kakasiは
廣瀬> Text-Kakasi-0.10.tar.gz + kakasi-2.2.5w-lib1.diff
廣瀬> でした。

廣瀬さんのメールを読んで、Text-Kakasi-0.10.tar.gz +
kakasi-2.2.5w-lib1.diff で試したら、kanjiio.c に一行、おきまりの

#define bcopy(a,b,c) memcpy(b,a,c)

で動きました。しかし、すごく速いですねぇ。一日に数十回 mknmz す
る私はとってもうれしいです。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxxxxxxxxxx)