To: installer@jp.win.ne.jp Subject: emacs-20.3 + dynamic loading + canna.so + canna.el From: Makoto Fujiwara X-Mailer: Mew version 1.93b51 on Emacs 20.3 / Mule 4.0 Message-Id: <19980822093144Q.makoto@ki.nu> Date: Sat, 22 Aug 1998 09:31:44 +0900 Sender: owner-installer@jp.win.ne.jp X-Mail-Count: 4702 X-Sequence: installer 4702 千葉市中央区長洲 藤原 誠 皆様、いつも大変お世話になっています。さて、 emacs-20.3 に ftp://ftp.jaist.ac.jp/pub/GNU/elisp/emacs-20-dl/ にある (g新部さんの作られた) emacs-20.0.91-dl.diff を当てて、同じ場所にある(守岡さんが用意された) emacs-canna-1.0.tar.gz か、一つ下にある、 emacs-canna-19980702.tar.gz を使って、 emacs-20.3 + dynamic loading + canna.so + canna.el を動かそうとしています。 ・SunOS 4.1.4 ではうまく行った。 のですが、 以下の二つの OS では M-x canna した時に、 Emacs /minibuffer 上には dynamic-loading と表示されて ・Solaris 2.5.1 では、 relocation error: symbol Qintegep not found のように言われる。(これは記憶で書いているので正確ではありません) ・Linux-ppc では、 /usr/local/libexec/emacs/20.3/powerpc-unknown-linux-gnu/canna.so: \ undefined symbol: Qintegerp と言われるのですが、これについて何か御存知の方はいらっしゃ るでしょうか。 (そのように組立てても M-x canna しなければ何の問題もなく 使えます) (NetBSD には dlopen() がないような気がする ;-( ) 作業する上で変更した点 ( dl patch を当てた後で) ○ Solaris 2.5.1 の時 diff src/s/sol2-5.h-oooo src/s/sol2-5.h 30a31,33 > #define HAVE_DYNAMIC_LOADER > #define HAVE_LIBDL > ○ diff src/dynl-dl.c-ooo src/dynl-dl.c 48a49,51 > #ifndef NULL > #define NULL 0 > #endif 62a66 > printf("%s\n", dlerror()); 一つ目は linuxppc の時だけ。二つ目は Solaris2.5.1/Linux 共。 ○その他、 emacs-canna-1.0.tar.gz を開けると dl-canna-1.0 という名前になるので、そう呼ぶとして、 ○ configure の件 dl-canna-1.0 には configure が付いていない snapshot 版の方には configure が付いているのだけれど canna-include の変数についてうまく行かないので、結局 手作業が入る(環境変数には - の字は使えない ?) ○ char-or-char-intp が未定義 snapshot 版の canna.el を使うと、 char-or-char-intp が未定義 と言われてしまうので、 canna.el は dl-canna 版の方を使って見たらうまく行った (と覚えているのだから SunOS 4.1.4 の話だと思う。 再現するかどうかは未確認) などのことがあります。 【質問】 ・dynamic loading (Re: dlopen) をしていて、 本体 -> 呼ばれて load されるもの -> 本体を呼ぶ 時に、 load されるもの、(この場合 canna.so) が本体(emacs)の中身 (この場合 Qintegerp) をまた呼ぶとして、 そういうしくみは、誰が(何が)解決するのでしょうか。 ld -rpath-link の辺りが関係するかなと思ったが、 関係なさそう ・「そもそも、そういう問題ではない」のでしょうか ・ELF の時は、別に何かおまじないが必要なのでしょうか ・(もし僕は間違っていないとすると) 上記問題に関係ありそうな OS に依存した情報はど こかにあるでしょうか。 (Solaris 2.5.1 の patch 一覧は一応見たつもりです) 【参考 URL】 http://www.ki.nu/software/emacs-20/ http://www.kdel.info.eng.osaka-cu.ac.jp/~miya/Install/Linux/emacs.html 【その他】 dynamic loading を emacs-20 に含めたらいいのにと思われる向きがあ ると思いますが、GPL で配られているemacs は、「その系を作成するのに 使われた原始譜 source fileは全て入手することが出来ること」にしばら れます。この patch は、そうでない系を作ることが出来るのに手を貸し てしまうので、dynamic loadingを作った人も、RMS も、含めることには 賛成出来ないという事情があるようです。(含めなくても問題があるとい う見方の方が正しいかも知れない) じゃ「 OS はどうするの」というつっこみも当然有効なようです。 【その他 2】 fj.editor.mule に書こう。 でも問題は dynamic loading だから少し違う。 かも知れないし canna.so の問題かも知れない。 ELF の問題なのかな、 と考えた末に、 installer がやはり、こういう時はいい。 # そう言えば ucspi-tcp の件は、その後まだどこにも書いていません。 --- (藤原)