TinyX(XFree86 4.2.0) porting (powerpc cross compile)

 

 

1.  TinyX를 설치하기전에 powerpc용 툴체인이 설치 되어 있어야 한다.

2.  termcap 라이브러리가 powerpc용으로 porting 되어 있어야 한다.

3.  flex 라이브러리가 powerpc용으로 porting 되어 있어야 한다.

 

- 위의 3개 항목이 다 설치되어 있어야한다만약에 설치가 되어있지 않았다면..

  마지막 장을 참조바람..

 

 

아래 사이트 가서 XFree86 4.2.0 파일(3개 파일)을 다운 받는다..

X420src-1.tgz(source)

X420src-2.tgz(font 관련)

X420src-3.tgz(doc 관련)

http://www.xfree86.org/

 

아래 사이트 가서 버그 패치파일(4개 파일)을 다운 받는다..

4.2.0-libGLU-bad-extern.patch

4.2.0-xlib-i18n-module.patch

4.2.0-xlib-security.patch

4.2.0-zlib-security.patch

http://netmirror.org/mirror/xfree86.org/4.2.0/fixes/

 

X420src-1.tgz 패키지파일을 풀고 patch 한다.

[punbear@localhost ~]tar zxvf X420src-1.tgz

[punbear@localhost ~]cd  xc

[punbear@localhost xc]cat ../4.2.0-libGLU-bad-extern.patch | p1

나머지파일 3개도 이와 같이 patch 한다.


Patch가 끝난후 xc/config/cf 디렉토리에 host.def 파일을 아래와 같이 생성한다.

 - host.def

 

#define KDriveXServer              YES

#define KdriveServerExtraDefines   -DMAXSCREENS=2

#define TinyXServer                YES

#define CrossCompiling             YES

#define TouchScreen                NO

#undef BuildRandR

#define BuildRandR                 YES

#define BuildXInputLib             YES

#define ProjectRoot                /usr/X11R6

#define Freetype2Dir               $(TOP)/extras/freetype2

#define Freetype2LibDir            $(TOP)/exports/lib

#define BuildXTrueType             YES

#define BuildScreenSaverExt        YES

#define BuildScreenSaverLibrary    YES

#define SharedLibXss               YES

#define ServerXdmcpDefines

#define XfbdevServer               YES

 

cross.def 파일은 생성되어 있는데..cross compiler 환경에 맞게끔 수정해주어야 한다.

 

- cross.def

 

#undef i386Architecture

#define PpcArchitecture

 

#undef OptimizedCDebugFlags

#define OptimizedCDebugFlags    -O2

#define ServerCDebugFlags       -O2

#undef StandardDefines

#define StandardDefines         -Dlinux -D__ppc__ -D_POSIX_SOURCE \

                                -D_BSD_SOURCE -D_GNU_SOURCE -DX_LOCALE

#undef CcCmd

#define StdIncDir /home/funbear/powerpc/include

#define PreIncDir

#undef PostIncDir

#define PostIncDir /home/funbear/powerpc/lib/gcc-lib/powerpc-405-linux-gnu/3.3.2/include

#define CcCmd /home/funbear/powerpc/bin/powerpc-405-linux-gnu-gcc

#undef CplusplusCmd

#define HasCplusplus YES

#define CplusplusCmd /home/funbear/powerpc/bin/powerpc-405-linux-gnu-g++

#define DoRanlibCmd YES

#define RanlibCmd /home/funbear/powerpc/bin/powerpc-405-linux-gnu-ranlib

 

#undef ExtraLoadFlags

#define ExtraLoadFlags

#define FbNoPixelAddrCode

#undef TermcapLibrary

#define TermcapLibrary -ltermcap

 

#undef LdPostLib

#define LdPostLib       -L/home/funbear/powerpc/lib

 

#undef ExtensionOSDefines

#define ExtensionOSDefines

 

#define ServerXdmcpDefines      /**/

 

#include <cross.rules>

 

cross.def 파일 수정후 /xc/programs/xdm/Makefile vi열어서 아래와 같이 수정한다.

 

418 line XONLYLIB =  -lX11 이부분을 XONLYLIB =  -lX11 lcrypt 로 수정한다.

- 이부분을 수정하지 않고서 컴파일 하였을 때.. crypt 라이브러리 링크가 제대로

 되지가 않아서 오류가 나게 된다..

 

 

Makefile 파일 수정후 xc 디렉토리로 이동하여 make 한다.

[punbear@localhost xc]make World

host 사양에 따라서 10~15분정도 소요..

echo Full build of Release 6.6 of the X Window System complete.

위의 message가 나왔다면 make가 성공적으로 컴파일 된것이다..

 

[punbear@localhost xc]make DESTDIR=$PWD/../ppc install

X가 설치된 디렉토리는 ../ppc 에 생성된다..

 

현재 설치된 디렉토리에서 ../ppc 내용을 tar로 묶고 nfs 디렉토리로 옮긴다.

[punbear@localhost ~]tar cvf ppcX.tar ppc

 

이제 타겟보드를 부팅하고 tmp 디렉토리로 이동해서 묶음을 푼다..

#cd /tmp

#tar xvf /(nfs디렉토리)/ppcX.tar

 

모두 풀렸으면 /ppc/usr/X11R6 /usr 로 옮긴다.

#mv ./ppc/usr/X11R6 /usr

다 옮겼으면 /ppc 에 나머지들은 다 지운다..

 

그리고나서 bin 디렉토리 PATH 설정 및 LD_LIBRARY_PATH export 시킨다.

#export PATH=$PATH:/usr/X11R6/bin

#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/X11R6/lib

 

설정은 다 마무리 되었으며X 서버를 뛰워서 간단한 test 프로그램들을 뛰어본다.

#Xfbdev &

#x11perf rect100

제대로 실행이 된다면설치가 완료 된것이다^^