TurboLinux 7でコンパイルに失敗する

提供: Samba-JP
J301から転送)
移動先:案内検索
KB番号 J0301
最終更新日 2002/01/12
作成者 武田 保真
最終更新者 たかはしもとのぶ

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.2.x日本語版
  • Samba 2.2.x
  • Samba 2.0.x日本語版
  • Samba 2.0.x

現象

TurboLinux 7上で、ソースからコンパイルしたときに、以下のエラーが発生します。

 Compiling smbd/server.c
 In file included from /usr/include/linux/vfs.h:4,
                  from /usr/include/linux/fs.h:14,
                  from /usr/include/linux/capability.h:17,
                  from /usr/include/sys/capability.h:24,
                  from include/includes.h:366,
                  from smbd/server.c:22:
 /usr/include/asm/statfs.h:12: redefinition of `struct statfs'
 make: *** [smbd/server.o] エラー 1

原因

TurboLinux 7において、libcapパッケージをインストールするとインストールされる /usr/include/sys/capability.h で定義されている 'struct statfs'と、 /usr/include/sys/statfs.h で定義されている 'struct statfs' の定義が重複しているため、コンパイル時にエラーが発生しています。

対処策

libcapパッケージをアンインストールするか、source/configure.inに次のパッチを適用してから、autoconfを実行した後、configure、makeを行ってください。

 --- configure.in.orig   Thu Dec 27 15:36:15 2001
 +++ configure.in        Thu Dec 27 15:36:29 2001
 @@ -378,7 +378,7 @@
  AC_CHECK_HEADERS(shadow.h netinet/ip.h netinet/tcp.h netinet/in_systm.h netinet/in_ip.h)
  AC_CHECK_HEADERS(nss.h nss_common.h sys/security.h security/pam_appl.h security/pam_modules.h)
  AC_CHECK_HEADERS(stropts.h poll.h)
 -AC_CHECK_HEADERS(sys/capability.h syscall.h sys/syscall.h)
 +AC_CHECK_HEADERS(syscall.h sys/syscall.h)
  AC_CHECK_HEADERS(sys/acl.h sys/cdefs.h glob.h)
 
  # For experimental utmp support (lastlog on some BSD-like systems)

この技術情報は sugj-tech:4327 からの一連のスレッドの議論を元に作成されています。