hns - 日記自動生成システム - Version 2.19.9

先月 2007年05月 来月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Namazu for hns による簡易全文検索
詳しくは 詳細指定/ヘルプを参照して下さい
検索式:

2007年05月04日(金) 旧暦 [n年日記] [更新:"2007/05/06 01:33:47"]

#1 [Emacs] Shared object "libXmu.so.6" not found

emacs で make bootstrap すると、次のように止まる件について少しだけ調べて見た
gcc -nostartfiles `echo -R/usr/X11/lib | sed -e 's/-R/-Wl,-rpath,/'` -Wl,-rpath,/usr/pkg/lib -L/usr/pkg/lib -Wl,-rpath,/usr/local/lib -L/usr/local/lib -Wl,-z,nocombreloc -Wl,-znocombreloc -L/usr/X11/lib -o temacs pre-crt0.o /usr/lib/crt0.o /usr/lib/crti.o /usr/lib/crtbegin.o dispnew.o frame.o scroll.o xdisp.o xmenu.o window.o charset.o coding.o category.o ccl.o cm.o term.o xfaces.o xterm.o xfns.o xselect.o xrdb.o fontset.o xsmfns.o fringe.o image.o emacs.o keyboard.o macros.o keymap.o sysdep.o buffer.o filelock.o insdel.o marker.o minibuf.o fileio.o dired.o filemode.o cmds.o casetab.o casefiddle.o indent.o search.o regex.o undo.o alloc.o data.o doc.o editfns.o callint.o eval.o floatfns.o fns.o print.o lread.o abbrev.o syntax.o unexelf.o bytecode.o process.o callproc.o region-cache.o sound.o atimer.o doprnt.o strftime.o intervals.o textprop.o composite.o md5.o tparam.o lastfile.o gmalloc.o ralloc.o vm-limit.o widget.o mktime.o ../lwlib/liblw.a -L/usr/X11/lib -lXaw3d -lXmu -lXt -lSM -lICE -lXext -ltiff -ljpeg -lpng -lz -lm -lungif -lXpm -lX11 -lossaudio -ltermcap -lm -lgcc -lc -lgcc /usr/lib/crtend.o /usr/lib/crtn.o

/usr/pkg/lib/libXaw3d.so: warning: warning: tmpnam() possibly used unsafely, use mkstemp() or mkdtemp()
./temacs --batch --load loadup bootstrap
Shared object "libXmu.so.6" not found
*** Error code 1
ldd して見ると、 一部で見つかって一部で見つかっていない
ttyp3:makoto@bologna 10:35:44/070504(...cvs-work/emacs-work)> ldd src/temacs |grep Xmu
        -lXmu.6 => not found
        -lXmu.6 => /usr/X11/lib/libXmu.so.6
ttyp3:makoto@bologna 10:35:55/070504(...cvs-work/emacs-work)> 
次のように ktrace で見て見る
   129  10:26   ktrace src/temacs
   130  10:26   kdump ktrace.out | less
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd06c)
 12663      1 temacs   NAMI  "/usr/X11/lib/libc.so.12"
 12663      1 temacs   RET   open -1 errno 2 No such file or directory
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd06c)
 12663      1 temacs   NAMI  "/usr/pkg/lib/libc.so.12"
 12663      1 temacs   RET   open -1 errno 2 No such file or directory
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd070)
 12663      1 temacs   NAMI  "/usr/local/lib/libc.so.12"
 12663      1 temacs   RET   open -1 errno 2 No such file or directory
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd068)
 12663      1 temacs   NAMI  "/usr/lib/libc.so.12"
 12663      1 temacs   RET   open 3
 12663      1 temacs   CALL  __fstat30(3,0x7fffcfb8)
 12663      1 temacs   RET   __fstat30 0
 12663      1 temacs   CALL  mmap(0,0x1000,1,1,3,0,0,0)
 12663      1 temacs   RET   mmap 1100664832/0x419ad000
 12663      1 temacs   CALL  munmap(0x419ad000,0x1000)
 12663      1 temacs   RET   munmap 0
 12663      1 temacs   CALL  mmap(0,0x11e000,5,0x10000002,3,0,0,0)
 12663      1 temacs   RET   mmap 1105133568/0x41df0000
 12663      1 temacs   CALL  mmap(0x41ef2000,0xa000,7,0x12,3,0,0,0xf2000)
 12663      1 temacs   RET   mmap 1106190336/0x41ef2000
 12663      1 temacs   CALL  mmap(0x41efc000,0x12000,7,0x1012,0xffffffff,0,0,0)
 12663      1 temacs   RET   mmap 1106231296/0x41efc000
 12663      1 temacs   CALL  mprotect(0x41ee2000,0x10000,0)
 12663      1 temacs   RET   mprotect 0
 12663      1 temacs   CALL  close(3)
 12663      1 temacs   RET   close 0
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd070)
 12663      1 temacs   NAMI  "/usr/pkg/lib/libXmu.so.6"
 12663      1 temacs   RET   open -1 errno 2 No such file or directory
 12663      1 temacs   CALL  open(0x7fffd058,0,0x7fffd06c)
 12663      1 temacs   NAMI  "/usr/lib/libXmu.so.6"
 12663      1 temacs   RET   open -1 errno 2 No such file or directory
 12663      1 temacs   CALL  write(2,0x7fffd5b8,0x25)
 12663      1 temacs   GIO   fd 2 wrote 37 bytes
       "Shared object \"libXmu.so.6\" not found"
ある共有ライブラリを呼出した時に、その中から更に Xmu を参照している時に、rpath_link の設定 が不充分なために問題が起きている、という気がする。
  • その呼出された共有ライブラリを作る時の問題:: どの共有ライブラリか
  • Emacs を作る時の rpath_link に不足がある
前者の気もする。libc か。もしそうだとすると libc を作る時に /usr/X11/lib を知る訳が ないから後者ということになる。古い emacs を作って見る ?
cvs -d `cat emacs-current/CVS/Root` co -D 2006-06-01 emacs
これでも同じだった。という訳で emacs 側ではなさそう。 上の gcc の引数に出て来る次の部分
`echo -R/usr/X11/lib | sed -e 's/-R/-Wl,-rpath,/'`
は src/s/netbsd.h の部分に由来するけれど、この部分の調整が不充分という理解をしている。 しかし、少し 変更して見た が変化なし。


#2 [Emacs][pkgsrc] つっこみをいただいたので、

調べて見ました。

「/usr/pkg/lib/libXaw3d.so.8 の作り方が不適切」らしいです。

x11/Xaw3d で make:

+ cc -o ./libXaw3d.so.6.1~ -shared -Wl,-rpath,/usr/pkg/lib -Wl,-soname,libXaw3d.so.6 AllWidgets.o AsciiSink.o AsciiSrc.o AsciiText.o Box.o Command.o Dialog.o Form.o Grip.o Label.o Layout.o List.o MenuButton.o Paned.o Panner.o Porthole.o Repeater.o Scrollbar.o Simple.o SimpleMenu.o Sme.o SmeBSB.o SmeLine.o SmeThreeD.o StripChart.o Text.o TextSink.o TextSrc.o TextAction.o TextPop.o TextTr.o ThreeD.o Tip.o Toggle.o Tree.o Vendor.o Viewport.o Xaw3dP.o XawInit.o laygram.o laylex.o MultiSrc.o MultiSink.o XawIm.o XawI18n.o -L/usr/pkg/lib -lXmu -lXt -lSM -lICE -lXext -lX11 -lXt -lSM -lICE -lXext -lX11
ttyp3:makoto@bologna 9:43:34/070505(...x11/Xaw3d)> ldd ./work.bologna/xc/lib/Xaw3d/libXaw3d.so.6
./work.bologna/xc/lib/Xaw3d/libXaw3d.so.6:
        -lXmu.6 => not found
        -lXt.6 => not found
        -lSM.6 => not found
        -lICE.6 => not found
        -lXext.6 => not found
        -lX11.6 => not found
ttyp3:makoto@bologna 9:43:48/070505(...x11/Xaw3d)> 
xpkgwedge.def
ttyp3:makoto@bologna 10:09:17/070505(...x11/Xaw3d)> grep rpath /usr/pkg/lib/X11/config/xpkgwedge.def
#define SharedLibraryLoadFlags -shared -Wl,-rpath,$(USRLIBDIRPATH)
#define ExtraLoadFlags -Wl,-rpath,$(USRLIBDIRPATH)
#define ExtraLoadFlags -Wl,-rpath,$(USRLIBDIRPATH) -Wl,-rpath-link,$(BUILDLIBDIR)
USRLIBDIRPATH
ttyp3:makoto@bologna 10:03:21/070505(...x11/Xaw3d)> find . -type f -exec grep USRLIBDIRPATH /dev/null '{}' \;
./work.bologna/xc/lib/Xaw3d/Makefile: EXTRA_LOAD_FLAGS = -Wl,-rpath,$(USRLIBDIRPATH)
./work.bologna/xc/lib/Xaw3d/Makefile:    USRLIBDIRPATH = $(USRLIBDIR):$(XPROJECTROOT)/lib
ttyp3:makoto@bologna 10:03:29/070505(...x11/Xaw3d)> 
XPROJECTROOT
ttyp3:makoto@bologna 10:02:52/070505(...x11/Xaw3d)> find . -type f -exec grep XPROJECTROOT /dev/null '{}' \;
./work.bologna/xc/lib/Xaw3d/Makefile:   TOP_X_INCLUDES = -I$(XPROJECTROOT)/include
./work.bologna/xc/lib/Xaw3d/Makefile:     XPROJECTROOT = $(X11_ROOT)
./work.bologna/xc/lib/Xaw3d/Makefile:       XENVLIBDIR = $(XPROJECTROOT)/lib
./work.bologna/xc/lib/Xaw3d/Makefile:    USRLIBDIRPATH = $(USRLIBDIR):$(XPROJECTROOT)/lib
./work.bologna/xc/lib/Xaw3d/Makefile:        LDPRELIBS = -L$(USRLIBDIR) -L$(XPROJECTROOT)/lib
./work.bologna/xc/lib/Xaw3d/Makefile:       LDPOSTLIBS =  -L$(XPROJECTROOT)/lib
X11_ROOT
ttyp3:makoto@bologna 10:03:29/070505(...x11/Xaw3d)> find . -type f -exec grep X11_ROOT  /dev/null '{}' \;
./work.bologna/xc/lib/Xaw3d/Makefile:X11_ROOT = /usr/X11
./work.bologna/xc/lib/Xaw3d/Makefile:     XPROJECTROOT = $(X11_ROOT)
./work.bologna/xc/lib/Xaw3d/Makefile:        CONFIGDIR = $(X11_ROOT)/libdata/config
ttyp3:makoto@bologna 10:05:06/070505(...x11/Xaw3d)> 
試しに、make した後で、Makefile を次のように変更し、
-     SHLIBLDFLAGS = -shared -Wl,-rpath,$(USRLIBDIR)
+     SHLIBLDFLAGS = -shared -Wl,-rpath,/usr/X11/lib
次のように make すると、
   386  11:32   vi work.bologna/xc/lib/Xaw3d/Makefile
   387  11:32   rm work.bologna/.build_done
   388  11:32   touch work.bologna/xc/lib/Xaw3d/TextTr.o
   389  11:33   make
次のように ldd が解決する
ttyp3:makoto@bologna 11:34:08/070505(...x11/Xaw3d)> ldd ./work.bologna/xc/lib/Xaw3d/libXaw3d.so.6
./work.bologna/xc/lib/Xaw3d/libXaw3d.so.6:
        -lX11.6 => /usr/X11/lib/libX11.so.6
        -lICE.6 => /usr/X11/lib/libICE.so.6
        -lSM.6 => /usr/X11/lib/libSM.so.6
        -lXt.6 => /usr/X11/lib/libXt.so.6
        -lXext.6 => /usr/X11/lib/libXext.so.6
        -lXmu.6 => /usr/X11/lib/libXmu.so.6
ttyp3:makoto@bologna 11:34:37/070505(...x11/Xaw3d)> 
このまま sudo make package しておいて、emacs を作ってみると、問題が解決していました。

何故 Xaw3d だけ問題が出る ?:

もう一度 先ほどの記録 を見ると
  • Emacs から参照している共有ライブラリで
  • pkgsrc の中で make したもの
  • 更にその中で X11 側 (/usr/X11/lib) を参照
している、という条件に合うのは、これだけ (/usr/X11R6 でなく /usr/X11 に入れているというのも条件のうち)。



最近の日記
2026年02月28日
my first script-fu
2026年01月29日
Die Fledermaus at New National theatre 2026/01/29
2025年12月25日
pbulk 11.99.3 (emacs30)
2025年11月22日
crash dump
2025年10月25日
recover from disk error
以上、1 日分です。
タイトル一覧
カテゴリ分類
Powered by hns-2.19.9, HyperNikkiSystem Project

Count.cgi (since 2000/02/05)