DirectFB+WebKit for A&W6410 포팅 매뉴얼

WebKit 2009/05/07 09:19

시스템 개요

Host

CPU : x86

O/S : Fedora 7

Target

CPU : A&W6410(S3C6410)

O/S : Linux 2.6.21.5

Kernel Image, Filesystem Image : http://juncon.tistory.com/39

사용된 패키지/라이브러리

DirectFB-1.2.8

DirectFB-example-1.2.0

Gtk+-2.12.11

glib-2.16.5

atk-1.23.5

libjpeg-6b

libpng 1.2.31

freetype-2.3.7

expat-2.0.1

fontconfig-2.6.0

tiff-3.8.2

pkg-config 0.20

pixman-0.10.0

cairo-1.6.4

pango-1.20.5

libxml2-2.6.30

curl-7.18.2

icu4c-3.8.1

sqlite-3.6.2

openssl-0.9.8h

libgpg-error-1.6

libgcrypt-1.4.2

libxslt-1.1.24

tiff-3.8.2

WebKit-r36309

 

빌드를 위한 시스템 구축

Host

빌드는 Fedora 7, Fedora 10 전체설치 버전에서 테스트 하였다. 다른 시스템에서도 빌드가 가능하지만, Fedora 7을 권장한다. (Redhat 9부터 Fedora 4~Fedora 10까지 해보았지만 Fedora 7이 가장 안정적으로 크로스컴파일이 되었다.)

 

gpref 설치

빌드시에 gperf패키지가 필요하다. 간단히 yum을 이용하여 설치한다.

# yum –y install gperf

 

관련 파일 준비

빌드를 위하여 툴체인, WebKit소스, 패치등을 다운받는다. (파일이 필요하신 분은 댓글 남겨주세요~)

 

1. WebKit_toolchains_20090506_anw6410.tar.gz     à 툴체인

2. WebKit-r36309_20090506_anw6410.tar.gz            à WebKit 소스

3. cairo-1.6.4-patch.tar.gz                                    à cairo-1.6.4 Patch

 

경로 설정

본 문서에서는 아래의 경로에서 작업한다.

 

기본 디렉토리 : /home/juncon/webkit

WebKit 소스 : /home/juncon/webkit/WebKit-r36309

라이브러리 : /home/juncon/webkit/libs

툴체인 : /opt/crosstool

빌드 prefix : /usr/local/webkit

 

 

소스 준비

# cd ~juncon

# mkdir webkit

# tar zxvf WebKit-r36309_20090506_anw6410.tar.gz –C /home/juncon/webkit

# tar zxvf WebKit_toolchains_20090506_anw6410.tar.gz –C /opt

 

라이브러리 빌드

라이브러리 빌드는 /home/juncon/webkit/libs에서 작업한다.

# mkdir /home/juncon/webkit/libs

# cd /home/juncon/webkit/libs

 

pkg-config 0.20.0 (for x86)

# wget http://pkgconfig.freedesktop.org/releases/pkg-config-0.20.tar.gz

# tar zxvf pkg-config-0.20.tar.gz

# cd pkg-config-0.20

# ./configure --prefix=/usr/local/webkit

# make

# make install

# cd ..

 

환경변수 설정

이제 툴체인과 pkg-config를 사용하기 위하여 환경변수를 설정한다.

# export PATH=/usr/local/webkit/bin: /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/bin:$PATH

# export PKG_CONFIG_PATH=/usr/local/webkit/lib/pkgconfig

 

which 명령어를 이용하여 PATH가 정상적으로 잡혔는지 확인한다.

# which pkg-config

/usr/local/webkit/bin/pkg-config

# which arm-linux-gcc

/opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/bin/arm-linux-gcc

 

zlib 1.2.3

# wget http://www.zlib.net/zlib-1.2.3.tar.gz

# tar zxvf zlib-1.2.3.tar.gz

# cd zlib-1.2.3

# CC=arm-linux-gcc RANLIB=arm-linux-ranlib AR=arm-linux-ar ./configure --prefix=/usr/local/webkit --shared

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

 

Libpng 1.2.31

# wget ftp://ftp.simplesystems.org/pub/libpng/png/src/libpng-1.2.31.tar.gz

# tar zxvf libpng-1.2.31.tar.gz

# cd libpng-1.2.31

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

jpeg-6b

# wget http://freeware.sgi.com/source/libjpeg/libjpeg-6b.tar.gz

# tar zxvf /libjpeg-6b.tar.gz

# cd libjpeg-6b

# ./configure --prefix=/usr/local/webkit --enable-shared --enable-static --host=arm-linux

# vi Makefile

      23번 라인 : CC = arm-linux-gcc

      63번 라인 : AR= arm-linux-ar rc

      65번 라인 : AR2= arm-linux-ranlib

# make

# make install

# cd ..

 

FreeType 2.3.7

# wget http://download.savannah.gnu.org/releases/freetype/freetype-2.3.7.tar.gz

# tar zxvf freetype-2.3.7.tar.gz

# cd freetype-2.3.7

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

libxml 2.6.32

# wget ftp://xmlsoft.org/libxml2/libxml2-2.6.30.tar.gz

# tar zxvf libxml2-2.6.30.tar.gz

# cd libxml2-2.6.30

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

libgpg-error-1.6

# wget ftp://ftp.ring.gr.jp/pub/net/gnupg/libgpg-error/libgpg-error-1.6.tar.bz2

# tar jxvf libgpg-error-1.6.tar.bz2

# cd libgpg-error-1.6

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

libgcrypt-1.4.1

# wget ftp://ftp.ring.gr.jp/pub/net/gnupg/libgcrypt/libgcrypt-1.4.2.tar.gz

# tar zxvf libgcrypt-1.4.2.tar.gz

# cd libgcrypt-1.4.2

# vi Makefile.in

240: tests 삭제

241: tests 삭제

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

libxslt-1.1.24

# wget ftp://xmlsoft.org/libxslt/libxslt-1.1.24.tar.gz

# tar zxvf libxslt-1.1.24.tar.gz

# cd libxslt-1.1.24

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

openssl-0.9.8h

# wget http://www.openssl.org/source/openssl-0.9.8h.tar.gz

# tar zxvf openssl-0.9.8h.tar.gz

# cd openssl-0.9.8h

Configure 파일의 325번 라인에 있는linux-elf 라인전체를 복사해 아래 굵게 표시한 부분을 수정한다.

"linux-arm",    "arm-linux-gcc:-DL_ENDIAN -DTERMIO -O3 -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)",

 

# ./Configure linux-arm --prefix=/usr/local/webkit --openssldir=/usr/local/webkit no-threads no-zlib no-asm shared

 

Makefile을 수정한다

AR = arm-linux-ar rc

RANLIB = arm-linux-ranlib

# make

# make install

 

expat 2.0.1

# wget http://nchc.dl.sourceforge.net/sourceforge/expat/expat-2.0.1.tar.gz

# tar zxvf expat-2.0.1.tar.gz

# cd expat-2.0.1

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

 

fontconfig 2.6.0

# wget http://fontconfig.org/release/fontconfig-2.6.0.tar.gz

# tar zxvf fontconfig-2.6.0.tar.gz

# cd fontconfig-2.6.0

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --with-arch=arm-unknown-linux-gnu --disable-docs

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

 

tslib 1.0

# wget http://download.berlios.de/tslib/tslib-1.0.tar.bz2

# tar jxvf tslib-1.0.tar.bz2

# cd tslib-1.0

# ./autogen.sh

# ./configure --prefix=/usr/local/webkit --target=arm-linux --host=arm-linux --enable-shared CC=arm-linux-gcc

# vi config.h

#define malloc rpl_malloc 을 삭제한다.

# make

# make install

# cd ..

 

DirectFB 1.2.8

# wget http://www.directfb.org/downloads/Core/DirectFB-1.2.8.tar.gz

# tar zxvf DirectFB-1.2.8.tar.gz

# cd DirectFB-1.2.8

# ./configure --prefix=/usr/local/webkit --target=arm-linux --host=arm-linux --without-x --disable-osx --disable-x11 --enable-fbdev --with-gfxdrivers=none --build=i686 --with-inputdrivers=tslib,keyboard --enable-zlib

# make

# make install

# cd ..

 

DirectFB Examples 1.2.0

# wget http://www.directfb.org/downloads/Extras/DirectFB-examples-1.2.0.tar.gz

# tar zxvf DirectFB-examples-1.2.0.tar.gz

# cd DirectFB-examples-1.2.0

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

이제 DirectFB빌드는 끝났다. 이대로 /usr/local/webkit을 보드에 올려서 DirectFB 예제들을 실행하면 된다.

 

glib 2.16.5

# wget http://ftp.gnome.org/pub/gnome/sources/glib/2.16/glib-2.16.5.tar.gz

# tar zxvf glib-2.16.5.tar.gz

# cd glib-2.16.5

# vi glib-config.cache

glib_cv_long_long_format=${glib_cv_long_long_format=ll}

glib_cv_stack_grows=${glib_cv_stack_grows=no}

glib_cv_has__inline=${glib_cv_has__inline=yes}

glib_cv_has__inline__=${glib_cv_has__inline__=yes}

glib_cv_uscore=${glib_cv_uscore=no}

ac_cv_func_posix_getpwuid_r=${ac_cv_func_posix_getpwuid_r=yes}

ac_cv_func_posix_getgrgid_r=${ac_cv_func_posix_getgrgid_r=yes}

glib_cv_use_pid_surrogate=${glib_cv_use_pid_surrogate=yes}

 

# ./configure --prefix=/usr/local/webkit --host=arm-linux --with-threads=posix --cache-file=glib-config.cache

# make

# make install

 

다음 빌드시 크로스 컴파일한 glib-genmarshal이 선택되지 않도록 한다.

# mv /usr/local/webkit/bin/glib-genmarshal /usr/local/webkit/bin/glib-genmarshal_arm

# cd ..

 

atk-1.23.5

# wget http://ftp.gnome.org/pub/gnome/sources/atk/1.23/atk-1.23.5.tar.gz

# tar zxvf atk-1.23.5.tar.gz

# cd atk-1.23.5

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

 

pixman-0.10.0

# wget http://www.cairographics.org/releases/pixman-0.11.10.tar.gz

# tar zxvf pixman-0.11.10.tar.gz

# cd pixman-0.11.10

# vi Makefile.in

      201: test삭제

 

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

cairo-1.6.4

# wget http://www.cairographics.org/releases/cairo-1.6.4.tar.gz

# tar zxvf cairo-1.6.4.tar.gz

# cd cairo-1.6.4

 

FTP에서 cairo-1.6.4-patch.tar.gz파일을 받는다.

# tar zxvf cairo-1.6.4-patch.tar.gz

# patch -p1 < 001-cairo_dfb-run-clipped-function.patch

# patch -p1 < 002-cairo_dfb-dest-image-clip.patch

# patch -p1 < 003-cairo_dfb-zero-box-clip-fix.patch

# patch -p1 < 004-cairo-blit-optimization.patch

# patch -p1 < 005-cairo-font-crash-fix.patch

 

# ./configure --prefix=/usr/local/webkit --host=arm-linux --enable-directfb=yes --enable-xlib=no --enable-xlib-xrender=no --enable-xcb=no --without-x --disable-win32

# make

# make install

# cd ..

 

pango-1.20.5

# wget http://ftp.gnome.org/pub/GNOME/sources/pango/1.20/pango-1.20.5.tar.gz

# tar zxvf pango-1.20.5.tar.gz

# cd pango-1.20.5

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --enable-cairo --disable-xlib --disable-win32

# make

# make install

# cd ..

 

tiff 3.8.2

# wget ftp://ftp.remotesensing.org/pub/libtiff/tiff-3.8.2.tar.gz

# tar zxvf tiff-3.8.2.tar.gz

# cd tiff-3.8.2

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x

# make

# make install

# cp -au /usr/local/webkit/* /opt/crosstool/gcc-4.1.1-glibc-2.5/armv6-vfp-linux-gnueabi/armv6-vfp-linux-gnueabi/

# cd ..

 

gtk+-2.12.11

# wget http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/gtk+-2.12.11.tar.gz

# tar zxvf gtk+-2.12.11.tar.gz

# cd gtk+-2.12.11

# vi gtk+-config.cache

ac_cv_lib_Xinerama_XineramaQueryExtension=${ac_cv_lib_Xinerama_XineramaQueryExtension=no}

# ./configure --prefix=/usr/local/webkit --host=arm-linux --without-x --with-gdktarget=directfb --cache-file=gtk+-config.cache

# make

# make install

# cd ..

 

이제 DirectFB기반의 Gtk+-2.0이 빌드되었습니다. 이 상태로 보드에 올려서 gtk-demo를 실행하시면 됩니다.

 

sqlite 3.6.2

# wget http://www.sqlite.org/sqlite-3.6.2.tar.gz

# tar zxvf sqlite-3.6.2.tar.gz

# cd sqlite-3.6.2

# ./configure --prefix=/usr/local/webkit --host=arm-linux

# make

# make install

# cd ..

 

curl 7.18.2

# wget http://curl.s-lines.net/download/curl-7.18.2.tar.gz

# tar zxvf curl-7.18.2.tar.gz

# cd curl-7.18.2

# vi configure

28733라인에 { (exit 1); exit 1; }; }  à } 만 남기고 지운다.

# ./configure --prefix=/usr/local/webkit --host=arm-linux --with-ca-path=/usr/local/webkit/certs

# make

# make install

# cd ..

 

icu 3.6 for x86

icu를 컴파일 하다보면 컴파일중 생성한 tool을 이용하여 새로운 소스코드를 생성하는 과정에서 크로스 컴파일된 툴이 실행되지 못하는 오류가 있어 먼저 x86용으로 빌드한다. (디렉토리 : icu_x86)

# wget http://download.icu-project.org/files/icu4c/3.8.1/icu4c-3_8_1-src.tgz

# tar zxvf icu4c-3_8_1-src.tgz

# mv icu icu_x86

# cd icu_x86/source

# ./configure --enable-tests=no --enable-samples=no

# make

# cd ../../

 

icu 3.6 for arm

# tar zxvf icu4c-3_8_1-src.tgz

# cd icu/source

이전에 x86으로 빌드했던 것을 링크한다.

# ln –s ../../icu_x86/source/bin bin_x86

 

# vi data/icupkg.inc.in

마지막줄을 아래와 같이 변경

GENCCODE=../bin_x86/genccode

GENCMN=../bin_x86/gencmn

ICUPKG=../bin_x86/icupkg

 

# vi data/Makefile.in

bin_x86=../bin_x86 ß 8번째 라인에 추가

Makefile내의 BINDIR bin_x86으로 변경한다. (vi 명령 “:%s/BINDIR/bin_x86”)

 

# vi icudefs.mk.in

229번 라인을 아래와 같이 수정

INVOKE = $(LDLIBRARYPATH_ENVVAR)= /home/juncon/WebKit/libs/icu_x86/source/lib:$(LIBRARY_PATH_PREFIX)$(LIBDIR):$(top_bu    ilddir)/stubdata:$(top_builddir)/tools/ctestfw:$$$(LDLIBRARYPATH_ENVVAR) $(LEAK_CHECKER)

 

# vi extra/uconv/Makefile.in

141번 라인을 아래와 같이 수정

$(INVOKE) $(PKGDATA_INVOKE_OPTS) ../../bin_x86/pkgdata -p $(MSGNAME) $(PKGDATA_OPTS) -m $(PKGMODE) -s $(RESDIR) -d $(RESDIR)     -T $(RESDIR) $(RESDIR)/$(RESDIR).lst

164번 라인을 아래와 같이 수정

$(INVOKE) ../../bin_x86/genrb -e UTF-8 -s $(^D) -d $(@D) $(^F)

 

# vi extra/uconv/pkgdata.inc.in

마지막 라인을 아래와 같이 수정

GENCCODE=../../bin_x86/genccode

GENCMN=../../bin_x86/gencmn

ICUPKG=../../bin_x86/icupkg

 

# ./configure --prefix=/usr/local/webkit --host=arm-linux --enable-tests=no --enable-samples=no

# gmake

# gmake install

 


 

WebKit 빌드

FTP에서 다운받은 WebKit의 소스가 있는 디렉토리로 이동한다.

# cd /home/juncon/WebKit/WebKit-r36309

# ./autogen.sh --prefix=/usr/local/webkit --host=arm-linux --enable-debug=no --with-target=directfb

# make

# make install

 

WebKit의 실행파일인 GtkLauncher는 인스톨되지 않으므로 별도로 복사한다.

# cp ./Programs/.libs/GtkLauncher /usr/local/webkit/bin


 

한글 지원을 위한 폰트 설정

기본적으로 한글 폰트가 없어 보드에 포팅하고 실행을 하면 한글은 깨진다. 그래서 윈도우에서 사용하고 있는 gulim.ttc파일등을 사용하도록 설정한다.

폰트는 윈도우 PC c:\windows\fonts에 있다.

# mkdir /usr/local/webkit/share/fonts

# cp ARIALUNI.TTF gulim.ttc /usr/local/webkit/share/fonts

 

fonts.conf 파일을 수정해 준다.

# vi /usr/local/webkit/etc/fonts/fonts.conf

      26라인에 <dir>/usr/local/webkit/share/fonts</dir> 를 추가한다.

 

USB 만들기

본 문서에는 USB메모리를 ext3로 포멧한 후 사용하였다. 만약 mtdblock에 복사하고자 한다면 USB에 담은 결과물을 그대로 올리면 된다.

 

먼저 USB메모리를 ext3로 포멧한다.

USB 디바이스: /dev/sdc1

# fdisk /dev/sdc

fdisk 사용법은 man fdisk를 참조한다.

# mkfs.ext3 /dev/sdc1

# mount /dev/sdc1 /mnt/usb

 

/usr/local/webkit 디렉토리를 USB에 복사한다.

# cp –aR /usr/local/webkit /mnt/usb/

# cd /mnt/usb/webkit

 

필요없는 파일들을 삭제한다.

# find ./ -name “*.a” | xargs rm -rf

# find ./ -name “*.la” | xargs rm -rf

# find ./ -name “include” | xargs rm -rf

# find ./ -name “man” | xargs rm –rf

# cd ../../

# umount /mnt/usb

 

A&W6410에서 실행

이제 보드를 부팅하고 WebKit을 실행하기 위한 환경들을 설정한다. 당연히 인터넷에 접속 가능한 상태여야 한다.

ip설정

# ifconfig eth0 192.168.0.45

# route add default gw 192.168.0.1 eth0

 

DNS 설정

# vi /etc/resolv.conf

nameserver 210.94.0.73

 

WebKit 실행전 준비

# mount /dev/sda1 /mnt/usb

# cd /usr/local

# ln -s /mnt/usb/webkit

 

환경변수를 설정한다.

export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/webkit/lib

export PATH=/usr/local/webkit/bin:/sbin:/usr/sbin:/bin:/usr/bin

export LD_PRELOAD=/usr/lib/libts.so:/usr/lib/ts/pthres.so

export TSLIB_CONSOLEDEVICE=none

export TSLIB_FBDEVICE=/dev/fb0

export TSLIB_TSDEVICE=/dev/input/event1

export TSLIB_CALIBFILE=/etc/pointercal

export TSLIB_CONFFILE=/etc/ts.conf

export TSLIB_PLUGINDIR=/usr/lib/ts

 

WebKit 실행

# cd /usr/local/webkit/bin

 

만약 빌드 후 처음 실행이라면 gdk-pixbuf-query-loaders와 pango-querymodules를 실행한다.

# mkdir /usr/local/webkit/etc/pango

# ./pango-querymodules > ../etc/pango/pango.modules

# ./gdk-pixbuf-query-loaders > ../etc/gtk-2.0/gdk-pixbuf.loaders

 

 

이제 WebKit을 실행한다.

# ./GtkLauncher http://www.google.co.kr

 

맨처음 실행하게 되면 font를 캐쉬하는 작업을 하기 때문에 WebKit이 뜨기 까지 시간이 걸린다.

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 : Comments 7
  1. sean 2009/05/21 11:44 Modify/Delete Reply

    안녕하세요^^ 예전에 메신저로 미도리 물어봤었는데.....기억하시려나 모르겠어요.^^ 웹킷빌드관련 내용올려주셨네요..

    1. WebKit_toolchains_20090506_anw6410.tar.gz à 툴체인

    이렇게 있는데, 제가 기존에 사용하는 툴체인이있는데(RMI au1250, mips사용중이예요) 이거 말고 웹킷 툴체인이라고 따로있는건가요??

    • 전수근 juncon 2009/05/23 10:00 Modify/Delete

      안녕하세요^^
      툴체인은 어떤 것을 써도 상관없습니다. 저기에 있는 툴체인은 anw6410용 툴체인이구요 mips나 다른 아키텍쳐용 툴체인이 있으면 거기에 맞게 하시면 됩니다. 이 때에
      라이브러리를 빌드한 후 툴체인이 링크할 수 있는 디렉토리로 복사해 주면 됩니다.

  2. sean 2009/05/21 11:44 Modify/Delete Reply

    libxslt-1.1.24 빌드할때..grep: /usr/lib/libz.la: No such file or directory 이런 에러가 나요 ㅡㅡ;
    위 순서대로 빌드중이예요..뭔가 빠진건가요?^^;;

    그리고 glib 2.16.5 빌드할때도 다음과 같은 에러가 나더라구요...
    checking for glib-genmarshal... no
    configure: error: Could not find a glib-genmarshal in your PATH

    • 전수근 juncon 2009/05/23 09:58 Modify/Delete

      안녕하세요^^
      libz 빌드하고나서 툴체인으로 복사해 줘야 하구요..
      glib를 빌드하실 때에는 x86용으로 빌드된 glib가 있어야 됩니다. 보통 리눅스배포판은 glib가 있어서 문제가 없는데요...문제가 생긴다면 glib 소스를 x86으로 빌드하고 prefix를 다른 곳으로 합니다. 그 후 PATH 환경변수에 prfix/bin을 맨 앞에 잡아주고 다시 해보세요^^
      그럼 수고하세요~

  3. 쨍이 2009/06/03 11:40 Modify/Delete Reply

    안녕하세요..올려놓으신거 보고 따라하고 있는도중에 잘 모르는게 있어서 질문드립니다.
    현재저는 arm-linux-gcc4.3.2툴체인을 사용하고 있습니다.
    zlib 1.2.3 make install까지 끝내고 확인해보니..

    제가 가지고 있는 툴체인에는 아래처럼 디렉토리가 있습니다.
    bin include lib libexec share
    첨부하신 툴체인에는 디렉토리 구성이 아래와 같습니다.
    bin etc include info lib libexec man sbin share sys-include usr

    이런 상황에서 어떻게 접근을 해야할지 모르겠습니다.
    1.툴체인에 위와 같은 항목이 모두 들어 있어야 하나요??
    2.현재 저의 툴체인4.3.2에 위와 같이 구성하려면 어떻게 해야 하나요??
    가능하시다면 초보자 기준으로 설명 해주셨으면 합니다.
    네이트 친구등록해도 될까요??^^
    감사합니다..

  4. 쨍이 2009/06/04 14:11 Modify/Delete Reply

    일단 툴체인4.3.2를 가지고 테스트 해보고 있습니다.
    그런데 계속 잘되다가..
    directFB1.2.8 make시 아래와 같은 오류가 나타납니다.
    host pc는 ubuntu 8.04입니다.

    **********************************************************************
    /opt/tools/codesourcery/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.2/../../../../arm-none-linux-gnueabi/bin/ld: warning: library search path "/usr/lib" is unsafe for cross-compilation
    /usr/lib/libvncserver.so: could not read symbols: File in wrong format
    collect2: ld returned 1 exit status
    make[3]: *** [libdirectfb_vncinput.la] Error 1
    **********************************************************************

    아래와 같이 확인해보았습니다.. ^^;
    $ file /usr/lib/libvncserver.so.0.0.0
    /usr/lib/libvncserver.so.0.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped

  5. 쨍이 2009/06/04 15:56 Modify/Delete Reply

    directFB configure 옵션에 --disable-vnc 옵션을 추가해서 directFB 빌드완료되었고..
    directFB-example까지 빌드하였습니다.
    보드에 올려서 테스트해보려고 하는데 /usr/local/webkit/에 있는 폴더 및 파일들을
    보드의 /(루트)에 복사하고 테스트를 해봐야 하는 건가요??
    보드로 부팅후 루트로 복사하려고 하니 Read-only file system이라고 메세지가 나타납니다.
    그냥 /user/영역에 복사후 테스트하려니 라이브러리 경로를 찾지 못합니다.
    제가 이런걸 해본경험이 없는 초보라서요~~^^;
    감사합니다..

Write a comment


[A&W6410] 커널 이미지와 파일시스템 이미지입니다.

S3C6410/A&W6410 2009/05/05 10:51



A&W6410용으로 수정한 커널이미지와 루트파일시스템입니다.

파일 설명
zImage : a&w6410용 linux-2.6.21 이미지
rootfs16m : a&w6410용 루트 파일 시스템 이미지


보드에 다운로드 하는 방법
tftp로 다운로드 하는 방법은 http://juncon.tistory.com/35 를 참고하세요~


먼저 U-Boot 메뉴로 들어간 후 bootargs와 bootcmd를 수정한다.
# set bootargs "root=/dev/ram0 rootfstype=ext2 ramdisk=16384 initrd=0x51000000,16M console=ttySAC0,115200"
# set bootcmd "nand read c0008000 40000 200000;nand read c1000000 400000 800000;bootm c0008000"
# saveenv

다음 커널 이미지를 다운로드 한다.
# tftp 0x50000000 zImage
# nand erase 0x40000 0x200000
# nand write 0x50000000 0x40000 0x200000

다음으로 루트파일시스템 이미지를 다운로드 한다.
# tftp 0x50000000 rootfs16m.gz
# nand erase 0x400000 0x800000
# nand write 0x50000000 0x400000 0x800000

이제 부팅한다.# reset

이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 : Comment 0

Write a comment


Crosstool을 이용하여 eabi 툴체인 만들기

S3C6410/A&W6410 2009/05/03 17:08


1. 개발환경
Fedora Core 6 전체설치
Fedora 10으로 작업했지만, gcc가 4.3대의 버전에서는 문제가 있었다. 그래서 Fedora Core 6로 작업했다.

2. 사전 작업
crosstool은 기본적으로 root로 작업하는 것은 막아놓았다. 그래서 일반 사용자로 작업한다. 그 전에 툴체인이 설치될 디렉토리를 생성하고 권한을 사용자로 바꿔준다.
# mkdir /opt/crosstool
# chown juncon.juncon /opt/crosstool

이제 사용자로 변경한다.
# su - juncon

3. crosstool-0.43 다운로드
http://www.kegel.com/crosstool에 접속해 다운로드 한다.
$ wget http://www.kegel.com/crosstool/crosstool-0.43.tar.gz
$ tar zxvf crosstool-0.43.tar.gz

EABI 패치 작성 및 적용
$ vi eabi.patch

http://sources.redhat.com/ml/crossgcc/2006-12/msg00076.html 에서 패치 부분만 복사해 eabi.patch 파일로 저장한다.

$ cd crosstool-0.43
$ patch -p1 < ../eabi.patch
patching file arm-softfloat-eabi.dat
patching file crosstool.sh
patching file demo-arm-softfloat-eabi.sh
patching file gcc-4.1.1-glibc-2.5.dat
patching file getandpatch.sh
patching file patches/gcc-4.0.1/libiberty.patch
patching file patches/gcc-4.1.1/gcc-arm-softfp.patch
patching file patches/glibc-ports-2.5/glibc-arm-no-procinfo_h.patch
$ vi demo-arm-softfloat-eabi.sh
eval `cat arm-softfloat-eabi.dat gcc-4.1.1-glibc-2.5.dat` sh all.sh -notest –nounpack 라인의 –nounpack을 삭제한다.
$ vi gcc-4.1.1-glibc-2.5.dat
LINUX_DIR=linux-2.6.18.5 을 LINUX_DIR=linux-2.6.21.5로 변경한다.
$ chmod +x demo-arm-softfloat-eabi.sh
첨부한 파일을 현재 디렉토리에 복사하고 arm-softfloat-eabi.dat에 다음 내용을 추가한다.
$ vi arm-softfloat-eabi.dat
KERNELCONFIG=`pwd`/s3c.config

4. 빌드
이제 빌드를 시작한다.
$ ./demo-arm-softfloat-eabi.sh

필요한 파일은 ftp로 다운받으면서 진행된다.

5. 확인
빌드가 끝나면 /opt/crosstool에 결과물이 생성된다. 이것을 그대로 사용하면 된다.
참고로 gcc, ld등은 /opt/crosstool/gcc-4.1.1-glibc-2.5/arm-softfloat-linux-gnueabi/bin 에 위치한다.


이올린에 북마크하기(0) 이올린에 추천하기(0)
Trackback 0 : Comment 0

Write a comment

◀ PREV : [1] : [2] : [3] : [4] : [5] : ... [12] : NEXT ▶