On 2007/10/05, at 19:26, Takeshi Hamabuchi wrote:

お世話になります。
xeyes+を勉強のためインストールしてみました。以下にに経過報告させてい ただきます。

1)  http://suzuka.cool.ne.jp/krpm/dist/rpm/entertainment.html   から、xeyes+2.02.tar.gz をダウンロードして、ホーム以下で    tar xvzf で展開して、その中のreadmeファイルに従う。具体的には 以下に通りです。


     xmkmf
                    make
                    make install


とします。ここで、xpmライブラリが /usr/include/X11/にないことに気づ き一旦この方法は中止しました。因に、xterm上で経過です。


おそらく xmkmf -aを実行すると

$ imake -DUseInstalled -I/usr/local/lib/X11/config
make Makefiles
make includes
make depend
rm -f .depend
gccmakedep -f- -- -I/usr/local/include -DCSRG_BASED - DFUNCPROTO=15 -DNARROWPROTO -- xeyes+.c > .depend
xeyes+.c:23:17: xpm.h: No such file or directory

となることをおっしゃっているのだと想像して話します。
依存関係の生成に失敗しているだけなので、無視しても良いと思いますが、
勉強のためになさっているということなので、解説を加えます。


XPM ライブラリは以前は X とは別に配布されていましたが、
いつ頃かから X に含まれるようになり、
どちらにも対応できるようにソースを書く必要があったはずです。

問題の xeyes+.c の 23行目辺りにその対応が書かれており、
XPM というシンボルで切り替えています。

  #ifdef XPM
  #include <X11/xpm.h>
  #else
  #include "xpm.h"
  #endif /* XPM */

定義済なら /usr/X11R6/include/X11/xpm.h (今時ならこっち)
未定義なら /usr/X11R6/include/xpm.h など

ところがこの シンボルが gccmakedep に渡っていないために、
今時の環境での在処とは違うところを参照してエラーとなります。
この件の対応は後述します。

次に、

xmkmf
imake -DUseInstalled -I/usr/X11R6/lib/X11/config
make
cc -O -pipe -DXPM -I/usr/X11R6/include -DCSRG_BASED - DFUNCPROTO=15 -DNARROWPROTO -c xeyes+.c
xeyes+.c: In function `main':
xeyes+.c:117: warning: return type of 'main' is not `int'
rm -f xeyes+
cc -o xeyes+ -DXPM -L/usr/X11R6/lib xeyes+.o -lXpm -lX11 - lm -Wl,-rpath,/usr/X11R6/lib
make: don't know how to make xeyes+.man. Stop



上記の原因はやはり、xpm.hがないの一言に尽きるのでしょうか?

最後の行を読むと「xeyes+.manの作り方がわからないよ」と止まっています。
xeyes+ 本体のビルドはその1行上までで完了しており、
マニュアル関連のステップで止まっただけで、Xpmとは無関係です。

xeyes+ の配布物にはマニュアルページは含まれていないので、
ビルドしようとしないようにする修正と、
先の XPM シンボルの対応をすると、こんな感じでしょうか。

--- Imakefile.orig      2007-10-06 16:49:34.000000000 +0900
+++ Imakefile   2007-10-06 20:25:40.000000000 +0900
@@ -4,5 +4,5 @@
 # gcc
 #CC = gcc
 # CFLAGS = -O2 -Wall -DXPM -DUSLEEP
-CCOPTIONS = -DXPM
-ComplexProgramTarget(xeyes+)
+DEFINES = -DXPM
+ComplexProgramTargetNoMan(xeyes+)



メールによる返信