sh4-linux 용으로 samba3.4.0 버전을 크로스컴파일을 시도하는데
이래저래 자꾸만 에러가 나서 검색을 해봤다.
결론 : 검색하고 꼼꼼하게 읽어보자.. OTL
실질적으로 크로스컴파일에서 필요한건 CC 환경변수 설정과 configure에서 --host=i686(혹은 현재 아키텍쳐)를
해주는 것 외에는 별다른 것이 없다.
Step 1. 다운받고 압축푼다.
Step 2. samba-3.4.0/source3/ 에서 ./autogen.sh 를 실행시킨다.
Step 3. 환경을 설정한다.
export CC=sh4-linux-gcc
export samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
Step 4. configure를 실행한다. --target은 지정하지 않아야 컴파일이 진행된다.
./configure --host=i686
Step 5. Makefile을 수정한다.
make install 시에 설치될 위치를 정해준다.
Step 6. 컴파일 및 설치 한다.
make
make install
Step 7. 파일이 부족하면 복사한다.
나의 경우에는 libnsl.so libdl.so가 부족했다.
[링크 : http://en.wikibooks.org/wiki/Samba/Compiling_Samba_from_Source]
이래저래 자꾸만 에러가 나서 검색을 해봤다.
결론 : 검색하고 꼼꼼하게 읽어보자.. OTL
실질적으로 크로스컴파일에서 필요한건 CC 환경변수 설정과 configure에서 --host=i686(혹은 현재 아키텍쳐)를
해주는 것 외에는 별다른 것이 없다.
Step 1. 다운받고 압축푼다.
Step 2. samba-3.4.0/source3/ 에서 ./autogen.sh 를 실행시킨다.
Step 3. 환경을 설정한다.
export CC=sh4-linux-gcc
export samba_cv_CC_NEGATIVE_ENUM_VALUES=yes
export samba_cv_CC_NEGATIVE_ENUM_VALUES=yes 를 해주는 이유는 checking that the C compiler understands negative enum values... configure: error: cannot run test program while cross compiling 이런 에러가 발생을 하기 때문이다. 원래대로라면, 크로스 컴파일시에는 이 부분이 실행불가능 하므로 넘어가야 하는데, 이 부분이 제대로 처리되지 않아서 그런것으로 생각된다. |
Step 4. configure를 실행한다. --target은 지정하지 않아야 컴파일이 진행된다.
./configure --host=i686
컴파일 하다가 winbind 와 ldap 오류가 나면 귀차니즘으로 ./configure --host=i686 --without-winbind --without-ldap --disable-swat 라고 해주면 winbind와 ldap를 컴파일 하지 않는다. SWAT(Samba Web Admin Tool)는 사용하지 않는다면 꺼주면 된다. |
Step 5. Makefile을 수정한다.
make install 시에 설치될 위치를 정해준다.
prefix=/usr/local/samba exec_prefix=${prefix} ... CONFIGDIR = ${exec_prefix}/lib 원래 내용은 위와 같지만, prefix 의 주소는 target NFS 주소의 root를 정해주고 /etc/smb.conf가 기본 환경파일의 위치이므로, 이를 정해주기 위해 CONFIGDIR의 위치를 /etc로 정해준다. prefix=$(HOME)/target exec_prefix=${prefix} ... CONFIGDIR = /etc |
컴파일 시에 talloc.c 에서 lber.h ldap.h 에러가 나면 Compiling ../lib/talloc/talloc.c In file included from ../lib/talloc/talloc.c:36: include/includes.h:156:18: error: lber.h: No such file or directory include/includes.h:172:18: error: ldap.h: No such file or directory CPPFLAGS=-DHAVE_CONFIG_H -I/usr/include -Iinclude -I./include -I. -I. -I./../lib/replace -I./../lib/talloc -I./../lib/tevent -I./../lib/tdb/include -I./libaddns -I./librpc -I./.. -I./../lib/popt 를 추가해주면 해결된다. lber.h의 경로가 제대로 추가되지 않아서 발생하는 문제이다. |
Step 6. 컴파일 및 설치 한다.
make
make install
Step 7. 파일이 부족하면 복사한다.
나의 경우에는 libnsl.so libdl.so가 부족했다.
[링크 : http://en.wikibooks.org/wiki/Samba/Compiling_Samba_from_Source]
'프로그램 사용 > SMB(Samba)' 카테고리의 다른 글
smbd 구동이 안될경우 에러메시지 확인하기 (0) | 2009.09.15 |
---|---|
삼바설정 관련 용어 (0) | 2009.09.14 |
samba configure 설정 내용 (Samba 3.4.0 - Source3) (0) | 2009.09.14 |
smbtree / smbstatus (0) | 2009.09.07 |
삼바 - 윈도우 리눅스 파일 공유 (0) | 2009.09.05 |