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

[plamo:06814] Don't exist /usr/lib/libpthread.so



深川と申します。久々にポスト (長文) します。


  遅ればせながらようやく Plamo2.0 をインストールして環境構築中なの
ですが、xmms-1.2.2 や sylpheed-0.3.22 の configure が通らないという
現象にぶち当たりました。こんな感じ。

$ ./configure --enable-kanji --enable-texthack (xmms の場合)
(snip)
checking for glib-config... /usr/bin/glib-config
checking for GLIB - version >= 1.2.2... yes
checking for gtk-config... /usr/bin/gtk-config
checking for GTK - version >= 1.2.2... no
*** Could not run GTK test program, checking why...

  で、調べて行くと (xmms で調査。sylpheed が同じ原因かは未調査)
configure 中に作成するテストプログラムである conftest の実行で
Segmentaion Fault を起こしているのが原因だとわかりました。
GDB した時の様子は以下の通り。

(gdb) run
Starting program: /usr/local/src/xmms-1.2.2/./conftest
warning: Unable to find dynamic linker breakpoint function.
warning: GDB will be unable to debug shared library initializers
warning: and track explicitly loaded dynamic code.
Linux thread target has modified Unknown signal handling

Program received signal SIGSEGV, Segmentation fault.
0x402530ff in ?? () from /lib/libc.so.6
(gdb) bt
#0  0x402530ff in ?? () from /lib/libc.so.6
#1  0x4032b251 in ?? () from /lib/libpthread.so.0
#2  0x4032e438 in ?? () from /lib/libpthread.so.0
#3  0x4032824e in ?? () from /lib/libpthread.so.0

  thread? でも、conftest の中身はたいしたものではなく、thread
なんて使っていません。関係してそうなのは system 関数くらい。
試しにコメントアウトしてみると、ちゃんと動きます。
# ここもちょっと腑におちないのですが...。

  conftest のコンパイルオプションはこんな感じなのですが、
$ gcc -o conftest -g -O2 -I/usr/lib/glib/include -D_REENTRANT conftest.c
      -L/usr/lib -L/usr/X11R6/lib -lgtk -lgdk -rdynamic -lgmodule
      -lgthread -lglib -lpthread -ldl -lXext -lX11 -lm

  pthread なんて使ってないということで、-lpthread を外してみると
動きます。うーむ。もうちょっと調べると...

$ gcc conftest.c -L/usr/lib -lgthread -lglib -lpthread    は OK
$ gcc conftest.c -lgthread -lglib -lpthread               は NG

となる事がわかりました。
# -lgthread を外すとまたちょっと動作が違い、ここもちょい謎なのですが。
# そもそも -lgthread って?? pthread との関係は?


  ライブラリ検索パスで動作が違うとゆーことで調べて行くと...

$ ls -l /lib/libpthread*
-rwxr-xr-x 1 root root  67564 2月 5日 2000年 /lib/libpthread-0.8.so*
lrwxrwxrwx 1 root root     15 8月10日  01:17 /lib/libpthread.so -> libpthread.so.0*
lrwxrwxrwx 1 root root     17 8月10日  01:17 /lib/libpthread.so.0-> libpthread-0.8.so*

$ls -l /usr/lib/libpthread*
-rw-r--r-- 1 root root  89888 4月 16日  16:34 /usr/lib/libpthread.a
-rw-r--r-- 1 root root  95376 4月 16日  16:34 /usr/lib/libpthread_p.a

となっており、/usr/lib/libthread.so がないのが原因のように思われました。
# -lpthread なんてつけんなよ、ってのが筋かも知れませんが。
調べてみると Slackware 7.0 では以下のようになっています。

$ ls -l /lib/libpthread*
-rwxr-xr-x 1 root root 247008 Sep 16  1999 /lib/libpthread-0.8.so*
lrwxrwxrwx 1 root root     17 Feb 12  2000 /lib/libpthread.so.0 -> libpthread-0.8.so*

$ ls -l /usr/lib/libpthread*
-rw-r--r-- 1 root root 663802 Sep 16  1999 /usr/lib/libpthread.a
lrwxrwxrwx 1 root root     25 Feb 12  2000 /usr/lib/libpthread.so -> ../../lib/libpthread.so.0*
-rw-r--r-- 1 root root 669776 Sep 16  1999 /usr/lib/libpthread_p.a


  なんかサイズがやけに違うのが気になりますが、Slackware にならって

$ su
# cd /usr/lib
# ln -s ../../lib/libpthread.so.0 libpthread.so

してから configure をやり直すと無事終了しました。



  以上が顛末なのですが、この対処で問題ないでしょうか?
とゆーか、こんなの誰かがすぐにぶつかりそうな問題の気がするのですが、
今までにそのような報告は ML にありませんし、ひょっとして私が何か勘違い
してるのか、と不安なのですが。(^^;

# あと libpthread のサイズがやけに小さいのも。Slack のは strip してない
# ということなのかしらん?? それならいいけれど...。

  そうそう。Plamo は canna を使う Note PC 用お勧めパッケージを
インストールし、カーネル再構築した直後の状態です。
Plamo の CD は Linux Japan 2000/7 のものを使っています。

-- 
深川 誠司         Web: http://www1.plala.or.jp/fukafuka/
(Seiji Fukagawa)  mailto: fukafuka@fsinet.or.jp
                  XDriller 0.7.0 (α版) 公開中...

Follow-Ups
[plamo:06815] Re: Don't exist /usr/lib/libpthread.so, Seiji Fukagawa
[plamo:06826] Re: Don't exist /usr/lib/libpthread.so, Masayoshi Tsuchiya
[plamo:06827] Re: Don't exist /usr/lib/libpthread.so, KOJIMA Mitsuhiro

[検索ページ] [メール一覧]
Plamo ML 公開システム