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

[debian-users:03849] Re: Gtk compile error



田中@東大工学部と申します。

Shin <mituzi@xxxxxxxxxxxxxx> wrote:
> 
> 慎@未来ネットです。
> 
> SunSiteから、最新版のGtkを取ってきてコンパイルしました。そこで気になった
> んですが、./configureで-DX_LOCALEがnoになってしまいます。もし、-DX_LOCALE
> がなかったら、日本語はサポートされないのでしょうか?
> 
(少なくともpureなlibc6-based debianでは)されません。
gtk+-0.99.2のconfigureスクリプトでは

int main ()
{
  return setlocale (LC_ALL, "${with_locale}") == NULL;
}

を実行して、${with_locale}(--with-localeを指定しなかったら、その時の
locale)をlibcがサポートしているか判定していますが、debianの現在の
libc6(2.0.6-2)ではja_JP localeをサポートしていない(と思う)にもかかわらず、
setlocaleはサポートしている、と答えてしまい、判定に失敗します。

これを避けるには、
CFLAGS=-DX_LOCALE ./configure
として、明示的にX自身が持っている他国語サポートライブラリ(以下
X_LOCALE)を使用する、と指定すればよいのですが、debianで提供されるXのシ
ステムは、X_LOCALE関係をすべてdisableにしてコンパイルされているようで、
libX11.*はX_LOCALE関数群(Xsetlocaleなど)を持っていません。
libc5-compatなlibX11.*や、XFree86 Project Inc.配布のX331*.tgzに含まれ
るlibX11.*はX_LOCALEを持っています。

つまり、将来的にはlibc6がja_JP localeをサポートするのでしょうが、現在
まだサポートされていないのに、Xのほうはそれに先だってX_LOCALEをdisable
にされているので、pureなlibc6環境では(Xmb系の関数を使う)日本語機能はど
ちらからもサポートされません。

# これに気づかずに、このgtkの日本語パッチを作るとき苦労しました。

結果、libc6-based debianでgtkの日本語機能(正確には国際化機能)や、Xmb*系の
関数を使うには、
 1. X関係はX331*.tgzを自前でインストール
 2. libc5-compatなlibX11をリンク
の方法になると思います。2.はconfigureスクリプトなどの書換えが面倒なの
で、私は1.の方法を取っています。
このときも、CFLAGS=-DX_LOCALEとして明示的にX_LOCALEを使うことを示す必
要があります。

------------------------------------------------------------
田中伸哉(たなか・しんや)
shinya@xxxxxxxxxxxxxxxxxxxxxx