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

ika2006jp @ yahoo.co.jp ika2006jp @ yahoo.co.jp
2008年 7月 26日 (土) 14:22:58 JST


ikaです。

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

--- Tadamasa Teranishi <yw3t-trns @ asahi-net.or.jp> wrote:

> 寺西です。
> 
> ika2006jp @ yahoo.co.jp wrote:
> > 
> > > ika2006jp @ yahoo.co.jp 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 メーリングリストの案内