はじめまして、しちと申します。
かなり前の話題についてですが、質問させて下さい。
At Wed, 17 Apr 2002 22:50:55 +0900,
Keiichi Takahashi <bitwalk@...> wrote:
> ビットウォークの高橋です。
> 早速、日本語パッチを更新したRPMをアップしました。
> http://members10.tsukaeru.net/bitwalk/src/perl-Tk-800.024-27bw.nosrc.rpm
上記の nosrc を利用させて頂こうと思い、Tk800.024.tar.gz を取ってきて
(何も手を加えずに)以下の環境でビルドし、インストールしました。
Vine Linux 2.1.5 / perl-5.00503_jp-14.2
/usr/bin/widget (Perl/Tk Widget Demonstrations)も順調に動いている
ように見えたのですが「Vertical scale」を実行しようとすると
perl: error in loading shared libraries: /usr/lib/perl5/site_perl
/5.005/i386-linux/auto/Tk/Scale/Scale.so: undefined symbol: XSetFont
(実際は一行)
となる事に気付きました。以下のようなテストスクリプトでも同様でした。
$ perl -MTk -e 'MainWindow->new->Scale->pack; MainLoop;'
perl: error in loading shared libraries: /usr/lib/perl5/site_perl
/5.005/i386-linux/auto/Tk/Scale/Scale.so: undefined symbol: XSetFont
(実際は一行)
よく分かっていませんが、私の環境でビルドしたものでは
$ objdump -T Scale.so | grep XSetFont
00000000 D *UND* 00000000 XSetFont
$ ldd Scale.so
libm.so.6 => /lib/libm.so.6 (0x2aab8000)
libc.so.6 => /lib/libc.so.6 (0x2aad5000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
$ objdump -T Tk.so | grep XSetFont
$ ldd Tk.so
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2ab61000)
libnsl.so.1 => /lib/libnsl.so.1 (0x2ac06000)
libm.so.6 => /lib/libm.so.6 (0x2ac1c000)
libc.so.6 => /lib/libc.so.6 (0x2ac3a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
となりますが、高橋さんがビルドされた以下のパッケージでは
> パッケージ名
> perl-Tk-800.024-27bw.i386.rpm
> http://members10.tsukaeru.net/bitwalk/src/perl-Tk-800.024-27bw.i386.rpm
> ビルドした環境は、
>
> Red Hat Linux 7.2 / perl-5.6.1-26.72.3
>
> です。
$ objdump -T Scale.so | grep XSetFont
$ ldd Scale.so
libm.so.6 => /lib/libm.so.6 (0x2aab4000)
libc.so.6 => /lib/libc.so.6 (0x2aad1000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
$ objdump -T Tk.so | grep XSetFont
00000000 DF *UND* 0000007d XSetFont
$ ldd Tk.so
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2ab63000)
libnsl.so.1 => /lib/libnsl.so.1 (0x2ac08000)
libm.so.6 => /lib/libm.so.6 (0x2ac1e000)
libc.so.6 => /lib/libc.so.6 (0x2ac3c000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
となります。皆さんの環境では、問題無いでしょうか?
それで、とりあえず以下の様なパッチをあててビルドし直したところ、
--^ Scale_Makefile.PL.patch
diff -uNr Tk800.024.old/Scale/Makefile.PL Tk800.024.new/Scale/Makefile.PL
--- Tk800.024.old/Scale/Makefile.PL Fri Aug 9 01:19:47 2002
+++ Tk800.024.new/Scale/Makefile.PL Fri Aug 9 01:38:34 2002
@@ -1,7 +1,7 @@
use Tk::MMutil;
Tk::MMutil::TkExtMakefile(
- ($^O eq 'MSWin32' ? () : ('LIBS' => ["-lm"])),
+ ($^O eq 'MSWin32' ? () : ('LIBS' => ["-L/usr/X11R6/lib -lX11 -lm"])),
'dynamic_ptk' => 1
);
--$
$ objdump -T Scale.so | grep XSetFont
00000000 DF *UND* 0000006f XSetFont
$ ldd Scale.so
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2aab8000)
libm.so.6 => /lib/libm.so.6 (0x2ab5d000)
libc.so.6 => /lib/libc.so.6 (0x2ab7a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
$ objdump -T Tk.so | grep XSetFont
$ ldd Tk.so
libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x2ab61000)
libnsl.so.1 => /lib/libnsl.so.1 (0x2ac06000)
libm.so.6 => /lib/libm.so.6 (0x2ac1c000)
libc.so.6 => /lib/libc.so.6 (0x2ac3a000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x55555000)
となり、上記のテストスクリプトも動作しました。が、今度は、
$ perl -MTk -e \
'MainWindow->new->Scale(-label => "Scale Widget")->pack; MainLoop;'
とラベルを指定すると、ウィンドウには「SaeWde」と1文字おき
に表示され、日本語を指定すると化けるようになりました。^^;
さて、どのように対処すれば良いのでしょうか?
ビルドした環境について、他に必要な情報がありましたらご指摘下さい。
nohup rpm -vv -bb 〜として取得したビルド時のログも残してあります。
宜しくお願い致します。
--
Atsushi SHICHI <ats7@...>