2008年7月26日

[Namazu-users-ja 1109] Re:mknmz コマンド実行時に以下のエラーがでてしまいます。

ikaです。

お手間を取らせて申し訳ありません。

--- Tadamasa Teranishi <yw3t-trns@xxxxx> wrote:

> 寺西です。
>

> ika2006jp@xxxxx wrote:
> >
> > > ika2006jp@xxxxx wrote:
> > > >
> > > > ロードしてから、
> > >
> > >
> ロードしてから?って、いったい何をしたのでしょう。
>
> ...無視ぜず答えてくださいな。

すみません。
ldd /usr/local/lib/libkakasi.so
のようなコマンドを行ったと思います。

> kakasi_do が未定義ということは、libkakasi.so
> が正しく作られていない
> ということかもしれません。
> KAKASI
> をコンパイルした時に何もエラーはでていませんか?
もう一回makeしてみましたが、エラーらしいものは、でません
でした。

# make
make all-recursive
make[1]: ディレクトリ `/home/fedora/kakasi' に入ります
Making all in src
make[2]: ディレクトリ `/home/fedora/kakasi/src' に入りま

make[2]: `all' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/fedora/kakasi/src' から出ま

Making all in lib
make[2]: ディレクトリ `/home/fedora/kakasi/lib' に入りま

make[2]: `all' に対して行うべき事はありません.
make[2]: ディレクトリ `/home/fedora/kakasi/lib' から出ま

make[2]: ディレクトリ `/home/fedora/kakasi' に入ります
make[2]: ディレクトリ `/home/fedora/kakasi' から出ます
make[1]: ディレクトリ `/home/fedora/kakasi' から出ます

# make install
Making install in src
make[1]: ディレクトリ `/home/fedora/kakasi/src' に入りま

make[2]: ディレクトリ `/home/fedora/kakasi/src' に入りま

/bin/sh ../mkinstalldirs /usr/local/bin
/bin/sh ../libtool --mode=install /usr/bin/install -c
kakasi /usr/local/bin/kakasi
/usr/bin/install -c kakasi /usr/local/bin/kakasi
/bin/sh ../libtool --mode=install /usr/bin/install -c
mkkanwa /usr/local/bin/mkkanwa
/usr/bin/install -c mkkanwa /usr/local/bin/mkkanwa
/bin/sh ../libtool --mode=install /usr/bin/install -c
atoc_conv /usr/local/bin/atoc_conv
/usr/bin/install -c atoc_conv /usr/local/bin/atoc_conv
/bin/sh ../libtool --mode=install /usr/bin/install -c
rdic_conv /usr/local/bin/rdic_conv
/usr/bin/install -c rdic_conv /usr/local/bin/rdic_conv
/bin/sh ../libtool --mode=install /usr/bin/install -c
wx2_conv /usr/local/bin/wx2_conv
/usr/bin/install -c wx2_conv /usr/local/bin/wx2_conv
make[2]: `install-data-am' に対して行うべき事はありませ
ん.
make[2]: ディレクトリ `/home/fedora/kakasi/src' から出ま

make[1]: ディレクトリ `/home/fedora/kakasi/src' から出ま

Making install in lib
make[1]: ディレクトリ `/home/fedora/kakasi/lib' に入りま

make[2]: ディレクトリ `/home/fedora/kakasi/lib' に入りま

/bin/sh ../mkinstalldirs /usr/local/lib
/bin/sh ../libtool --mode=install /usr/bin/install -c
libkakasi.la /usr/local/lib/libkakasi.la
/usr/bin/install -c .libs/libkakasi.so.2.1.0
/usr/local/lib/libkakasi.so.2.1.0
(cd /usr/local/lib && rm -f libkakasi.so.2 && ln -s
libkakasi.so.2.1.0 libkakasi.so.2)
(cd /usr/local/lib && rm -f libkakasi.so && ln -s
libkakasi.so.2.1.0 libkakasi.so)
/usr/bin/install -c .libs/libkakasi.lai
/usr/local/lib/libkakasi.la
/usr/bin/install -c .libs/libkakasi.a
/usr/local/lib/libkakasi.a
ranlib /usr/local/lib/libkakasi.a
chmod 644 /usr/local/lib/libkakasi.a
PATH="$PATH:/sbin" ldconfig -n /usr/local/lib
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib

If you ever happen to want to link against installed
libraries
in a given directory, LIBDIR, you must either use libtool,
and
specify the full pathname of the library, or use the
`-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment
variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to
`/etc/ld.so.conf'

See any operating system documentation about shared
libraries for
more information, such as the ld(1) and ld.so(8) manual
pages.
----------------------------------------------------------------------
/bin/sh ../mkinstalldirs /usr/local/include
/usr/bin/install -c -m 644 libkakasi.h
/usr/local/include/libkakasi.h
make[2]: ディレクトリ `/home/fedora/kakasi/lib' から出ま

make[1]: ディレクトリ `/home/fedora/kakasi/lib' から出ま

make[1]: ディレクトリ `/home/fedora/kakasi' に入ります
make[2]: ディレクトリ `/home/fedora/kakasi' に入ります
/bin/sh ./mkinstalldirs /usr/local/bin
/usr/bin/install -c kakasi-config
/usr/local/bin/kakasi-config
/bin/sh ./mkinstalldirs /usr/local/share/kakasi
/usr/bin/install -c -m 644 ./kanwadict
/usr/local/share/kakasi/kanwadict
/usr/bin/install -c -m 644 ./itaijidict
/usr/local/share/kakasi/itaijidict
make[2]: ディレクトリ `/home/fedora/kakasi' から出ます
make[1]: ディレクトリ `/home/fedora/kakasi' から出ます


> $ objdump -t /usr/local/lib/libkakasi.so | grep
> kakasi_do
>
> と実行するとどうなるでしょう。
何もでてきませんでした。

# objdump -t /usr/local/lib/libkakasi.so

/usr/local/lib/libkakasi.so: file format elf32-i386

SYMBOL TABLE:
000000d4 l d .note.gnu.build-id 00000000
.note.gnu.build-id
000000f8 l d .gnu.hash 00000000
.gnu.hash
0000012c l d .dynsym 00000000
.dynsym
000001bc l d .dynstr 00000000
.dynstr
00000238 l d .gnu.version 00000000
.gnu.version
0000024c l d .gnu.version_r 00000000
.gnu.version_r
0000026c l d .rel.dyn 00000000
.rel.dyn
0000028c l d .rel.plt 00000000
.rel.plt
0000029c l d .init 00000000 .init
000002b4 l d .plt 00000000 .plt
000002f0 l d .text 00000000 .text
00000414 l d .fini 00000000 .fini
00000430 l d .eh_frame 00000000
.eh_frame
00001434 l d .ctors 00000000 .ctors
0000143c l d .dtors 00000000 .dtors
00001444 l d .jcr 00000000 .jcr
00001448 l d .data.rel.ro 00000000
.data.rel.ro
0000144c l d .dynamic 00000000
.dynamic
00001514 l d .got 00000000 .got
00001520 l d .got.plt 00000000
.got.plt
00001534 l d .bss 00000000 .bss
00000000 l d .comment 00000000
.comment
00000000 l d .debug_abbrev 00000000
.debug_abbrev
000002f0 l F .text 00000000
call_gmon_start
00000000 l df *ABS* 00000000 crtstuff.c
00001434 l O .ctors 00000000
__CTOR_LIST__
0000143c l O .dtors 00000000
__DTOR_LIST__
00001444 l O .jcr 00000000 __JCR_LIST__
00001534 l O .bss 00000004
dtor_idx.5647
00001538 l O .bss 00000001
completed.5645
00000320 l F .text 00000000
__do_global_dtors_aux
000003a0 l F .text 00000000 frame_dummy
00000000 l df *ABS* 00000000 crtstuff.c
00001438 l O .ctors 00000000 __CTOR_END__
00000430 l O .eh_frame 00000000
__FRAME_END__
00001444 l O .jcr 00000000 __JCR_END__
000003e0 l F .text 00000000
__do_global_ctors_aux
00000000 l df *ABS* 00000000 libdict.c
00000000 l df *ABS* 00000000 libkakasi.c
00000000 l df *ABS* 00000000 libkanjiio.c
00000000 l df *ABS* 00000000 liba2.c
00000000 l df *ABS* 00000000 libg2.c
00000000 l df *ABS* 00000000 libj2.c
00000000 l df *ABS* 00000000 libk2.c
00000000 l df *ABS* 00000000 libee2.c
00000000 l df *ABS* 00000000 libhh2.c
00000000 l df *ABS* 00000000 libjj2.c
00000000 l df *ABS* 00000000 libkk2.c
00000000 l df *ABS* 00000000 libitaiji.c
00000000 l df *ABS* 00000000 lib78_83.c
00001520 l O *ABS* 00000000 .hidden
_GLOBAL_OFFSET_TABLE_
00001448 l O .data.rel.ro 00000000
.hidden __dso_handle
00001440 l O .dtors 00000000 .hidden
__DTOR_END__
000003d7 l F .text 00000000 .hidden
__i686.get_pc_thunk.bx
0000144c l O *ABS* 00000000 .hidden
_DYNAMIC
00000000 w *UND* 00000000
__gmon_start__
00000000 w *UND* 00000000
_Jv_RegisterClasses
00000414 g F .fini 00000000 _fini
00001534 g *ABS* 00000000 __bss_start
0000153c g *ABS* 00000000 _end
00001534 g *ABS* 00000000 _edata
00000000 w F *UND* 00000175
__cxa_finalize@@GLIBC_2.1.3
0000029c g F .init 00000000 _init

> test.c という名前で以下のファイルを作成し、
>
> ===================================ここから
> #include <stdio.h>
> #include "libkakasi.h"
>
> main()
> {
> kakasi_do("");
> }
> ===================================ここまで
>
> $ gcc test.c -I /usr/local/include -L /usr/local/lib
> -lkakasi
>
> でコンパイルした時、エラーが発生しませんか?

エラーでました。
# gcc test.c -I /usr/local/include -L /usr/local/lib
/tmp/cc3OuHCo.o: In function `main':
test.c:(.text+0x19): undefined reference to `kakasi_do'
collect2: ld はステータス 1 で終了しました

エラーができれば、できるのでしょうか?↓

> できたバイナリ a.out を実行して
>
> $ ./a.out
>
> エラーがでませんか?

> $ ldd a.out
>
> の結果は?
>
> libkakasi.so が問題ないとなると、あとは Perl
> からの読み込み処理で
> 問題が起こっているということになるかと思います。
> --


--------------------------------------
Power up the Internet with Yahoo! Toolbar.
http://pr.mail.yahoo.co.jp/toolbar/
_______________________________________________
Namazu-users-ja mailing list
Namazu-users-ja@xxxxx
http://www.namazu.org/cgi-bin/mailman/listinfo/namazu-users-ja


投稿者 xml-rpc : 2008年7月26日 14:22
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/75689
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。