[an error occurred while processing this directive]
Contents
Sambaとは?
Samba日本語版
ドキュメント
技術情報
紹介&リンク
Community
プロジェクト
メーリングリスト
イベント
ユーザー会
etc...
お問合せ
ご支援・ご協力
日本 Samba ユーザ会 (Samba Users Group Japan)

EWS4800 におけるコンパイル

荒井正純 <arai@aloijia.ocean.hiroshima-u.ac.jp>
1998/01/26 作成


荒井正純さんによる、EWS4800 にて Samba 1.9.16p11 をコンパイルするためのノウハウです。バイナリ パッケージも入手可能ですが、これはバージョンが低いです。


From: arai@aloijia.ocean.hiroshima-u.ac.jp (Masazumi Arai)
Newsgroups: fj.sys.ews4800
Subject: Re: Cannot compile samba due to the error of trans2.c
Date: 30 May 1997 09:17:12 GMT
Organization: Environmental Sciences, Hiroshima University
Lines: 105
Message-ID: <ARAI.97May30181712@aloijia.ocean.hiroshima-u.ac.jp>
References: <ARAI.97May20095634@aloijia.ocean.hiroshima-u.ac.jp>
NNTP-Posting-Host: aloijia.ocean.hiroshima-u.ac.jp
Mime-Version: 1.0 (generated by tm-edit 7.106)
Content-Type: text/plain; charset=ISO-2022-JP
In-reply-to: arai@aloijia.ocean.hiroshima-u.ac.jp's message of 20 May 1997 00:56:34 GMT

荒井@広大・工 と申します。

samba-1.9.16p11 をmakeした際、trans2.c のコンパイルに失敗するという問
題に対して、多くの方からfollowを頂き、無事解決することができました。


1. 失敗の経緯

・OS
	EWS-UX/V (Rel 4.2) Release 7.1

・Makefile等の編集

(1) ケース1
  includes.h への追加:
	#include <sys/sockio.h>
	#define       SYSV
 	#define USE_WAITPID
	#define SIGNAL_CAST (void (*)())
	#define USE_STATVFS
	#define USE_GETCWD
	#define DEFAULT_PRINTING PRINT_SYSV
	#endif

  Makefile への追加:
  	# This is for EWS4800, EWS-UX/V (Rel4.2)
	CC = /usr/abiccs/bin/cc
	FLAGSM = -DEWS -DSHADOW_PWD  -DKANJI=\"euc\"
	LIBSM = -lsocket -lnsl -lc -lucb

(2) ケース2
  Makefile の編集のみ:
	CC = /usr/abiccs/bin/cc
	FLAGSM = -DSVR4 -DSHADOW_PWD -DKANJI=\"sjis\" -DDONT_HAVE_FLOCK
	LIBSM = -lsocket -lnsl -lc

ケース1は、「実例付きSambaの使い方」
(ftp://etlport.etl.go.jp/pub/windows/knowhow/samba.txt)
に載っていたパッチを元に、私が最初に試みた方法です。

ケース2は、パッチなどいらず、こうすればできると
中野敏行さん<xoi7mgsoxtw.fsf@spls87.ccs.mt.nec.co.jp>が教えて下さった
方法です。

私のところ(OSはRelease 7.1)では、いずれの方法も、次に示すエラーで失敗
しました。しかし、多くの方(太田さん、Release 8.1; 大貫さん、Release
9.1; 中野さん、Release 11.1)からは、いずれかの方法でコンパイルできた
との情報を頂きました。この点は、乙藤さんが御指摘のように、OSのRelease
に依存するようです。


・エラーメッセージ

  Compiling trans2.c
  accom: Error: trans2.c, line 195: number of dimensions between array
  argument and prototype disagree
           unix_convert(fname,cnum,0);
         ---------------------------^ 
  accom: Error: trans2.c, line 584: number of dimensions between array
  argument and prototype disagree
           unix_convert(directory,cnum,0);
         -------------------------------^
  (途中、略)
  *** Error code 1 (bu21)
  make: fatal error.


2. エラーの回避策

(1) ソースコードの修正

HORIE Masayukiさん <5m5orm$mdl$1@news.ipch.shizuoka.ac.jp>、倉島顕尚さ
ん <KURA.97May26095132@figaro.mmp.cl.nec.co.jp>から、ソースコードの
unix_convert(fname,cnum,0)の部分を修正すれば、 エラーを回避できるとの
御指摘を受けました。

そこで、trans2.c, pipes.c, reply.c に現れるすべての
	unix_convert(hogehoge,cnum,0)
を、
	unix_convert(hogehoge,cnum,(char*)0)
と書き換えました。

(2) リンクするライブラリの変更

リンクするライブラリとして、-lucbを指定するのはよくないとの御指摘を受
けました(中野さん、同記事; HORIEさん、同記事) 。しかし、-lucbを削除
すると、別のエラーが出ます(試したら、実際そうなった)。これには、
-lresolvを指定すればよいそうです(倉島さん、同記事)。

そこで、
	LIBSM = -lsocket -lnsl -lc -lresolv
としました。


3. 結果

以上の修正をして、make した結果、エラーなくコンパイルできました。
現在のところ、sambaはうまく動いています。

情報を下さった方には、この場を借りてお礼を申し上げます。ありがとうござ
いました。
----------------------------------------------------------------------
                                    荒井正純
                                    広島大学 工学部 共通講座環境基礎学
                                    arai@ocean.hiroshima-u.ac.jp


Copyright © 1999-2024 日本 Samba ユーザー会 (Samba-JP)
2011-12-19 01:17:50 JST 更新