[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[plamo:25541] Re: Samba3.0.14aがコンパイルできません(Plamo4.02)



From: ak@kitahara.jp
Subject: [plamo:25533] Samba3.0.14aがコンパイルできません(Plamo4.02)
Date: Tue, 17 May 2005 22:41:16 +0900

> 調べてみたところ、
> /usr/include/bits/syscall.h には
> #define SYS_utimes __NR_utimes
> という定義があるのですが、
> /usr/include/asm/unistd.h には
> __NR_utimes が定義されていないのが原因のようです。
> 
> samba-3.0.14a/source/smbwrapper/realcalls.h の
> #ifndef REPLACE_UTIMES
> #ifdef SYS_utimes
> #define real_utimes(fn, buf) (syscall(SYS_utimes, (fn), (buf))) // ←これ
> #else
> #define REPLACE_UTIMES 1
> #endif
> #endif
> が定義されてしまうが、__NR_utimes(SYS_utimesがマクロで変換されたもの)が
> 定義されていないのでエラーになってしまうようです。
> 
> Plamo4.01の時はSambaのコンパイルができていたので、何が違うのか探してみたところ、
> /usr/include/bits/syscall.h はlibcのパッケージに入っているようなので
> Plamo 4.01と比べてみたところ、
> Plamo 4.01 : libc-2.3.2-i386-P4
> Plamo 4.02 : libc-2.3.3-i586-P1
> と、libcのバージョンが異なっていました。
> (Plamo4.01の方の /usr/include/bits/syscall.h には
>  SYS_utimes の定義はありませんでした)

ざっと見ですが,2.4 カーネルの i386 な環境では __NR_utimes の定義が無
く,2.6 カーネルになってこの定義が導入されたようです.

------------
kojima@celeron[~]% find /usr/src/linux-2.4.29/include/ | xargs grep __NR_utimes
/usr/src/linux-2.4.29/include/asm-alpha/unistd.h:#define __NR_utimes                    363
/usr/src/linux-2.4.29/include/asm-sparc/unistd.h:#define __NR_utimes             138 /* SunOS Specific                              */
/usr/src/linux-2.4.29/include/asm-ia64/unistd.h:#define __NR_utimes                     1036
/usr/src/linux-2.4.29/include/asm-sparc64/unistd.h:#define __NR_utimes             138 /* SunOS Specific                              */
----------
kojima@celeron[~]% find /usr/src/linux-2.6.10/include/ | xargs grep __NR_utimes
/usr/src/linux-2.6.10/include/asm-m68knommu/unistd.h:#define __NR_utimes                266
/usr/src/linux-2.6.10/include/asm-sh/unistd.h:#define __NR_utimes               271
/usr/src/linux-2.6.10/include/asm-x86_64/unistd.h:#define __NR_utimes           235
/usr/src/linux-2.6.10/include/asm-x86_64/unistd.h:__SYSCALL(__NR_utimes, sys_utimes)
/usr/src/linux-2.6.10/include/asm-alpha/unistd.h:#define __NR_utimes                    363
/usr/src/linux-2.6.10/include/asm-ppc64/unistd.h:#define __NR_utimes            251
/usr/src/linux-2.6.10/include/asm-sparc/unistd.h:#define __NR_utimes             138 /* SunOS Specific                              */
/usr/src/linux-2.6.10/include/asm-i386/unistd.h:#define __NR_utimes             271
/usr/src/linux-2.6.10/include/asm-cris/unistd.h:#define __NR_utimes             271
/usr/src/linux-2.6.10/include/asm-m32r/unistd.h:#define __NR_utimes             271
/usr/src/linux-2.6.10/include/asm-ia64/unistd.h:#define __NR_utimes                     1036
/usr/src/linux-2.6.10/include/asm-m68k/unistd.h:#define __NR_utimes             266
/usr/src/linux-2.6.10/include/asm-mips/unistd.h:#define __NR_utimes                     (__NR_Linux + 267)
/usr/src/linux-2.6.10/include/asm-mips/unistd.h:#define __NR_utimes                     (__NR_Linux + 226)
/usr/src/linux-2.6.10/include/asm-mips/unistd.h:#define __NR_utimes                     (__NR_Linux + 230)
/usr/src/linux-2.6.10/include/asm-sh64/unistd.h:#define __NR_utimes             299
/usr/src/linux-2.6.10/include/asm-arm/unistd.h:#define __NR_utimes                      (__NR_SYSCALL_BASE+269)
/usr/src/linux-2.6.10/include/asm-ppc/unistd.h:#define __NR_utimes              251
/usr/src/linux-2.6.10/include/asm-sparc64/unistd.h:#define __NR_utimes             138 /* SunOS Specific                              */

-----------

だから,本来,i386 環境の 2.4 カーネルでは smbwrapper/wrapped.c の

    463 #ifdef HAVE_UTIMES
    464  int utimes(const char *name, const struct timeval *tvp)
    465 {
    466         if (smbw_path(name)) {
    467                 return smbw_utimes(name, tvp);
    468         }
    469
    470         return real_utimes(name, tvp);
    471 }
    472 #endif

HAVE_UTIMES は define されるべきではないのですが,glibc-2.3.3 を使うと
この定義が何らかの理由で define されてしまい,このようなエラーになるの
ではないかと思います.

この utimes はマイクロ秒レベルでタイムスタンプを設定する機能であり,無
ければ無いで(utime の秒レベルが使われるから)問題ないはずなので,この部
分をコメントアウトしてしまうというのはどうでしょう?

-------
こじま

References
[plamo:25533] Samba3.0.14aがコンパイルできません(Plamo4.02), ak

[検索ページ] [メール一覧]
Plamo ML 公開システム