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

Re: inputmethod/Chinput



kayです。

In article <20030502.131257.40870865.kei_sun@ba2.so-net.ne.jp>, SUNAGAWA Keiki <kei_sun@ba2.so-net.ne.jp> writes:

SUNAGAWA>添付のパッチを当ててunicon-imとChinputがうまく作れることを確
SUNAGAWA>認していただけませんか。こちらではchinputを実行してbig5なフォ
SUNAGAWA>ントが見つからずにエラーで止まるところまでは確認できました。

  えーと、試してみました。とりあえず、起動してメッセージを出した直後に
クラッシュしてますね。こんな感じです。メッセージが日本語なのは自前の 
ja_JP.eucJP/libc.cat 使ってるからです。

kay@layna[120] ldd /usr/X11R6/bin/chinput 
/usr/X11R6/bin/chinput:
         -lX11.6 => /usr/X11R6/lib/libX11.so.6
         -lXext.6 => /usr/X11R6/lib/libXext.so.6
         -lstdc++.4 => /usr/lib/libstdc++.so.4
         -lm.0 => /usr/lib/libm387.so.0
         -lm.0 => /usr/lib/libm.so.0
         -limmclient.1 => /usr/pkg/lib/libimmclient.so.1
         -lpth.14 => /usr/pkg/lib/libpth.so.14
         -limm_server.1 => /usr/pkg/lib/libimm_server.so.1
         -lc.12 => /usr/lib/libc.so.12
kay@layna[121] /usr/X11R6/bin/chinput 
Chinput Version 3.0 -- XIM Server
Distributed under the terms of the GNU General Public License (GPL)
セグメンテーションフォルト(Segmentation fault) (core dumped)

SUNAGAWA>pthの内部構造に依存しているのでなければ、POSIX threadで定義さ
SUNAGAWA>れている範囲のものしか使えないでしょう。-lpthreadはOKですが、-
SUNAGAWA>lpthは駄目です。pthパッケージに含まれているpthread(3)にも以下
SUNAGAWA>のようにあります。

  ということはもともと pthread.h を読み込んでいるのに、

LIB=-lpth

なんて書いているのが問題ということですね。

  ただ、気になるのは pth を pthread 互換のインターフェースとして使用し
ているのか、pth native のスレッドライブラリとして使用しているかですね。
pth.h を読み込んでいる場合には後者でしょうけど。

  加えてライブラリみたいなものについてはそれを使う実行ファイルがリンク
する pthread ライブラリと同じものを使う必要があるとか色々な制約がつく
わけですね。関連するものがどれか一つでも pth 依存なら全体を pth 依存に
しなければならないわけですから。

#複数の pthread を混ぜると多分マトモに動かないよなぁ。
#あれ?Xlib って pthread 対応してたっけ?してると native pthread になっ
#てるのかな?

SUNAGAWA>buildlink2はパッケージのconfigure/build時にどのヘッダーファイ
SUNAGAWA>ルやライブラリーが使用されるかを制御することによりこの問題を
SUNAGAWA>解決するものです。

  いや、それはわかっているのですが、制御した結果は configure なり 
Makefile の設定なりで反映されなければならないものだと思います。まあ、
configure のパラメーターやキャッシュに自動的に追加されるのであればいい
のですが、今回のような Makefile に直接書かれている場合にどうすれば良い
かというところです。

  とりあえず、pthread に関しては -lpthread を使えばいいということでしょ
うが、pthread.buildlink2.mk を見ても Makefile にどう書くべきかというこ
とまで書いてないので良くわからないんですよね。

  おそらく書くまでもなく当たり前のことだから書いてないということなんで
しょうけど、-lpthread というのが普遍的かどうかが良くわからないんですよ
ね。例えば ptl2 だと -lPTL になるわけですし。

#PTL2 の場合には更にコンパイラのラッパスクリプトがありますけど…………。
-- 
吉田恵介@川崎市高津区千年 (kay@kaynet.or.jp)
ホームページ http://www.kaynet.or.jp/~kay/