[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: nbitools on solaris 2.6/sparc
平松です。
At Tue, 17 Feb 2004 19:27:47 +0900,
ishit <ishit@oak.dti.ne.jp> wrote:
> rm -f *.CKP *.ln *.BAK *.bak *.o core errs ,* *~ *.a tags TAGS make.log \#*
> rm -f -r Makefile.proto Makefile Makefile.dep bootstrap
> /opt/bsd/bin/bmake Makefile.boot
> cd ./config/imake && /opt/bsd/bin/bmake -f Makefile.ini BOOTSTRAPCFLAGS=""
> making imake with BOOTSTRAPCFLAGS= in config/imake
> cc -o ccimake -O -I../../include -I../../imports/x11/include/X11 ccimake.c
> cc -c -O -I../../include -I../../imports/x11/include/X11 `./ccimake` imake.c
> imake.c: In function `get_gcc_incdir':
> imake.c:1073: storage size of `sb' isn't known
> imake.c: In function `CleanCppInput':
> imake.c:1223: storage size of `st' isn't known
> imake.c: In function `ReadLine':
> imake.c:1432: storage size of `st' isn't known
> *** Error code 1
nbitoolsのディレクトリで make patch をすると、config/imake/imake.c の
150 行目くらいに
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
/* This needs to be before _POSIX_SOURCE gets defined */
# include <sys/param.h>
# include <sys/types.h>
# include <sys/sysctl.h>
# include <sys/stat.h>
#endif
というブロックがあるのですが、これを
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
/* This needs to be before _POSIX_SOURCE gets defined */
# include <sys/param.h>
# include <sys/sysctl.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
に変更してみるとどうでしょうか?以下のような理由でそう思ったのですが……
1. エラーメッセージを見ると、struct stat を定義したファイルが include されて
いないのが原因らしい。
2. そこでgoogleで検索してみたところ、Solaris 8 の stat のマニュアルには
#include <sys/types.h>
#include <sys/stat.h>
が書いてあるらしいので、2.6でも同じとすると、imake.cのどこかでこの2つの
ファイルをincludeする必要がある。
3. 普通(?)に考えると
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__)
を
#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__APPLE__) || defined(SOLARIS)
にしたいところですが、今のところsys/types.hとsys/stat.hは
NetBSD -> 要る
FreeBSD -> 要る
Darwin -> 要る
Solaris -> 要る(少なくとも Solaris 8 では)
Linux -> 要る(マニュアルにはそう書いてある)
となっている。
4. そこで、sys/types.hとsys/stat.hは常にincludeしても問題はない
> > 他に対処する方法ですが、nbitools ではなく、x11/imake と x11/XFree86-libs
> > を使って make するとか、あれば OS に付属する imake を使うようにするとか
> > 変更してしまってもよいと思います。
>
> x11/imakeは、not availabile on SunOS-5.6-sparc といわれてしまいます。
meta-pkgs/XFree86/Makefile.common には
ONLY_FOR_PLATFORM= FreeBSD-*-i386 Linux-*-i386
と書いてありました。
--
// 平松 祥史
// hiramatu@boreas.dti.ne.jp