블로그 이미지

야메블로그

모든 것을 Ya-mae로 by Jungsub K.


OS X 에서 Crosstool-ng 빌드하기

간단하게 메모만 합니다.

OS X에서는 Crosstool-ng 가 정상적으로 컴파일되지 않습니다. (1.15.2 버전 기준)
sed, binutils, libtool을 별도로(GNU버전) 설치하고, configure 스크립트와 Makefile을 수정해줘야 합니다.

1. 필요한 패키지 설치.(MacPorts 이용)

$ sudo port install gsed binutils libtool

2. Crosstool-ng 다운로드 및 압축해제

이 글을 작성하는 시점에선 1.15.2가 가장 최신 버전입니다.

$ wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.15.2.tar.bz2
$ tar xjvf crosstool-ng-1.15.2.tar.bz2
$ cd crosstool-ng-1.15.2

3. configure.ac 수정.

configure 스크립트는 configure.ac 파일을 수정하고 autoconf로 재생성합니다.

File: configure.ac (1.15.2 버전 기준 125번째 줄 부터)

ACX_PATH_TOOL_REQ([OBJCOPY], [objcopy])
ACX_PATH_TOOL_REQ([OBJDUMP], [objdump])
ACX_PATH_TOOL_REQ([READELF], [readelf])

굵은 글씨로 표시한 부분을 아래와 같이 수정해 줍니다.

ACX_PATH_TOOL_REQ([OBJCOPY], [objcopy gobjcopy])
ACX_PATH_TOOL_REQ([OBJDUMP], [objdump gobjdump])
ACX_PATH_TOOL_REQ([READELF], [readelf greadelf])

그리고 bootstrap 스크립트를 실행새 configure 스크립트를 재생성합니다.
bootstrap 스크립트는 autoconf를 실행하는 스크립트입니다.

./bootstrap

4. configure 스크립트 실행

/PATH/TO/INSTALL 은 설치할 디렉토리.

$ ./configure --prefix=/PATH/TO/INSTALL --with-libtool=`which glibtool` --with-libtoolize=`which glibtoolize`

5. Makefile 수정

OS X에 기본으로 설치된 /usr/bin/install 프로그램은 -D 옵션을 지원하지 않습니다.
때문에 -D 옵션을 삭제하고 mkdir -p 명령을 별도로 추가해줍니다.

File: Makefile (1.15.2버전 기준 343번째 줄부터)

KCONFIG_FILES := conf mconf nconf kconfig.mk
install-lib-kconfig: $(DESTDIR)$(libdir) install-lib-main
@echo "  INST    'kconfig/'"
@for f in $(KCONFIG_FILES); do                                      \
   install -D "kconfig/$${f}" "$(DESTDIR)$(libdir)/kconfig/$${f}"; \
done

위의 붉은 색 -D를 삭제하고 mkdir 명령을 추가해 줍니다.

KCONFIG_FILES := conf mconf nconf kconfig.mk
install-lib-kconfig: $(DESTDIR)$(libdir) install-lib-main
@echo "  INST    'kconfig/'"
@mkdir -p "$(DESTDIR)$(libdir)/kconfig"
@for f in $(KCONFIG_FILES); do                                      \
    install "kconfig/$${f}" "$(DESTDIR)$(libdir)/kconfig/$${f}"; \
 done

6. 빌드하고 설치 완료.

$ make KBUILD_NO_NLS=1
$ sudo make install

KBUILD_NO_NLS=1 옵션은 http://www.crosstool-ng.org/#macos_x 참조.

Top