유영창씨 암 컴파일 내용을 따라함

VERSION:SAMBA 2.2.7A
그냥 컴파일(X86)은 전혀 에러가 없습니다.


6.2 삼바 빌드하기

삼바 패케지를 크로스 컴파일 환경으로 설정하며
공유라이브러리를 사용하지 않는 조건으로 컴파일 하여야 한다.

일단 패케지를 푼다.

[root@jdt arm-samba]# tar zxvf samba-latest.tar.gz

환경을 설정한다.
먼저 가상으로 설치될 위치를 만든다.

[root@jdt arm-samba]# mkdir ./buildroot
[root@jdt arm-samba]# mkdir ./buildroot/usr
[root@jdt arm-samba]# cd samba-2.2.5/source/
[root@jdt source]# ./configure --host=arm-linux --
prefix=../../buildroot/usr --with-readline=no --with-included-popt=yes

메이크 화일을 크로스 환경으로 수정하여야 한다.

[root@jdt source]# vi Makefile

CC=gcc 는 CC=arm-linux-gcc 로 수정
AR=arm-linux-ar 를 추가 한다.
LD=arm-linux-ld 를 추가 한다.

LDFLAGS= 는 LDFLAGS=-static 로 수정

FLAGS = $(ISA) $(FLAGS5) $(PASSWD_FLAGS) 는
FLAGS = $(ISA) $(FLAGS5) $(PASSWD_FLAGS) $(LDFLAGS) 로 수정

다음 LINK 줄은 FLAGS가 선언된 뒤쪽으로 넣는다.
LINK=$(CC) $(FLAGS) $(LDFLAGS)


Makefile에서 다음에 해당하는 위치를 참는다.

=======[ 찾아야 할 부분 ]
=======================================================
PASSWD_FLAGS = -DPASSWD_PROGRAM="$(PASSWD_PROGRAM)" -
DSMB_PASSWD_FILE="$(SMB_PASSWD_FILE)" -
DTDB_PASSWD_FILE="$(TDB_PASSWD_FILE)"
FLAGS1 = $(CFLAGS) -I./popt -Iinclude -I$(srcdir)/include -
I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper $(CPPFLAGS) -
DLOGFILEBASE="$(LOGFILEBASE)"
FLAGS2 = -DCONFIGFILE="$(CONFIGFILE)" -DLMHOSTSFILE="$(LMHOSTSFILE)"
FLAGS3 = -DSWATDIR="$(SWATDIR)" -DSBINDIR="$(SBINDIR)" -
DLOCKDIR="$(LOCKDIR)" -DCODEPAGEDIR="$(CODEPAGEDIR)"
FLAGS4 = -DDRIVERFILE="$(DRIVERFILE)" -DBINDIR="$(BINDIR)" -
DPIDDIR="$(PIDDIR)" -DLIBDIR="$(LIBDIR)"
FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
FLAGS = $(ISA) $(FLAGS5) $(PASSWD_FLAGS)
FLAGS32 = $(ISA32) $(FLAGS5) $(PASSWD_FLAGS)
=========================================================================
=======

찾았다면 다음과 같이 수정한다.

=======[ 수정 내용 ]
=======================================================
# PASSWD_FLAGS = -DPASSWD_PROGRAM="$(PASSWD_PROGRAM)" -
DSMB_PASSWD_FILE="$(SMB_PASSWD_FILE)" -
DTDB_PASSWD_FILE="$(TDB_PASSWD_FILE)"
# FLAGS1 = $(CFLAGS) -I./popt -Iinclude -I$(srcdir)/include -
I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper $(CPPFLAGS) -
DLOGFILEBASE="$(LOGFILEBASE)"
# FLAGS2 = -DCONFIGFILE="$(CONFIGFILE)" -DLMHOSTSFILE="$(LMHOSTSFILE)
"
# FLAGS3 = -DSWATDIR="$(SWATDIR)" -DSBINDIR="$(SBINDIR)" -
DLOCKDIR="$(LOCKDIR)" -DCODEPAGEDIR="$(CODEPAGEDIR)"
# FLAGS4 = -DDRIVERFILE="$(DRIVERFILE)" -DBINDIR="$(BINDIR)" -
DPIDDIR="$(PIDDIR)" -DLIBDIR="$(LIBDIR)"
# FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
# FLAGS = $(ISA) $(FLAGS5) $(PASSWD_FLAGS)
# FLAGS32 = $(ISA32) $(FLAGS5) $(PASSWD_FLAGS)

DEF_PASSWD_PROGRAM = /usr/bin/passwd
DEF_SMB_PASSWD_FILE = /usr/bin/smbpasswd
DEF_TDB_PASSWD_FILE = /etc/samba/smbpasswd.tdb
DEF_LOGFILEBASE = /var/log/samba/
DEF_CONFIGFILE = /etc/samba/smb.conf
DEF_LMHOSTSFILE = /etc/samba/lmhosts
DEF_SWATDIR = /usr/share/swat
DEF_SBINDIR = /usr/sbin
DEF_LOCKDIR = /var/locks/samba
DEF_CODEPAGEDIR = /usr/share/samba/codepages
DEF_DRIVERFILE = /etc/samba/printers.def
DEF_BINDIR = /usr/bin
DEF_PIDDIR = /var/locks/samba
DEF_LIBDIR = /usr/lib


PASSWD_FLAGS = -DPASSWD_PROGRAM="$(DEF_PASSWD_PROGRAM)" -
DSMB_PASSWD_FILE="$(DEF_SMB_PASSWD_FILE)" -
DTDB_PASSWD_FILE="$(DEF_TDB_PASSWD_FILE)"
FLAGS1 = $(CFLAGS) -I./popt -Iinclude -I$(srcdir)/include -
I$(srcdir)/ubiqx -I$(srcdir)/smbwrapper $(CPPFLAGS) -
DLOGFILEBASE="$(DEF_LOGFILEBASE)"
FLAGS2 = -DCONFIGFILE="$(DEF_CONFIGFILE)" -
DLMHOSTSFILE="$(DEF_LMHOSTSFILE)"
FLAGS3 = -DSWATDIR="$(DEF_SWATDIR)" -DSBINDIR="$(DEF_SBINDIR)" -
DLOCKDIR="$(DEF_LOCKDIR)" -DCODEPAGEDIR="$(DEF_CODEPAGEDIR)"
FLAGS4 = -DDRIVERFILE="$(DEF_DRIVERFILE)" -DBINDIR="$(DEF_BINDIR)" -
DPIDDIR="$(DEF_PIDDIR)" -DLIBDIR="$(DEF_LIBDIR)"
FLAGS5 = $(FLAGS1) $(FLAGS2) $(FLAGS3) $(FLAGS4) -DHAVE_INCLUDES_H
FLAGS = $(ISA) $(FLAGS5) $(PASSWD_FLAGS)
FLAGS32 = $(ISA32) $(FLAGS5) $(PASSWD_FLAGS)
=========================================================================
====

컴파일시에 popt.h 참조에 문제가 생기는데 이를 처리하여야 한다.

[root@jdt source]# cd popt
[root@jdt popt]# cp popt.h ../include/
[root@jdt popt]# cd ..

[root@jdt source]# make

에러내용
arm-linux-gcc: cannot specify -o with -c or -S and multiple compilations
<--여기서 막혀 있습니다.