交叉編譯場景分析(arm-linux)(六)--編譯TinyX

交叉編譯場景分析(arm-linux)(六)--編譯TinyX

 

文章出處:http://blog.csdn.net/absurd

 

1.    基本信息:

       

       

         
 

2.    過程分析

TinyX並不是一個獨立的軟件包,而是X Window的一種編譯配置。X Window採用的imake配置方式,與autoconf不一樣,你先要手工編譯配置文件。在xc/config/cf/README文件裏,有對各種選項詳細的介紹。

 

修改這些配置文件是一種比較繁瑣的事情,特別對於新手來說,往往要經歷修改配置文件-編譯-失敗-再修改配置文件這個循環好幾次。即使是對於有經驗的人來說,一次搞定也並非那麼容易。這個過程講起來比較冗長,這裏就不再多說,具體的配置文件可以參考構建處方。

 

按照BUILD.txt裏的建議,我們決定建立一個臨時目錄,在這個臨時目錄裏編譯,避免破壞原始文件。實踐證明這個建議很有用,因爲很少第一次編譯成功,重新編譯時不用再去解壓軟件包,可以節省不少時間。

[root@linux cross]# cd xc/config/util/

[root@linux util]# make lndir

[root@linux util]# cp lndir /usr/local/bin/

[root@linux util]# cd -

[root@linux cross]# mkdir armtinyx

[root@linux cross]# cd armtinyx

[root@linux armtinyx]# lndir ../xc/

 

現在我們把配置文件和patch文件拷貝進來:

[root@linux armtinyx]# cp ../armtinyx.patch/* . -rf

 

編譯:

[root@linux armtinyx] make World DESTDIR=$ROOTFS_DIR

 

出現下列錯誤:

/usr/local/arm-linux/lib/gcc/arm-linux/3.4.2/../../../../arm-linux/sys-include/sys/io.h:38: error: conflicting types for 'inb'

../../../../../programs/Xserver/hw/xfree86/common/compiler.h:1452: error: previous definition of 'inb' was here

/usr/local/arm-linux/lib/gcc/arm-linux/3.4.2/../../../../arm-linux/sys-include/sys/io.h:39: error: conflicting types for 'inw'

 

編輯armtinyx/programs/Xserver/hw/xfree86/common/compiler.h,刪除outb之類的空函數。

重新編譯:

[root@linux armtinyx] make

 

出現下列錯誤:

arm-linux-gcc: os/tiny/lbxio.o: No such file or directory

 

[root@linux armtinyx] cd programs/Xserver/os/tiny

[root@linux armtinyx] make lbxio.o

[root@linux armtinyx] cd -

[root@linux armtinyx] make

[root@linux armtinyx] make install DESTDIR=$ROOTFS_DIR

 

編譯成功!

 

其它說明:

l         若是2.6的內核,你可能要修改NR_KEYS的值爲128,否則programs/Xserver/hw/tinyx/linux/keyboard.c裏有內存越界問題,造成無法運行。

l         若運行時,發現觸摸屏不能使用,修改programs/Xserver/hw/tinyx/linux/tslib.c的數組TsNames,加入你使用的觸摸屏設備文件。若還是不行,檢查一下tslib需要的環境變量是否設置正確。

 

 

3.     構建處方

l         armtinyx.mk

ARMTINYX_PATCH_DIR=armtinyx.patch

XC_DIR=xc

 

all: clean config build

 

config:

    cd xc/config/util && make lndir && cp -f lndir /usr/bin

    rm -rf $(ARMTINYX_DIR)

    mkdir $(ARMTINYX_DIR)

    cd $(ARMTINYX_DIR) && lndir ../xc

    cp -rvf $(ARMTINYX_PATCH_DIR)/* $(ARMTINYX_DIR)

    echo "config done"

   

build:

    @cd $(ARMTINYX_DIR) && /

    make World DESTDIR=$$ROOTFS_DIR && make install && /

    cd programs/Xserver/os/tiny && make lbxio.o && cd -  && /

    make && /

    make install && /

    echo "build done"

 

clean:

    rm -rf $(ARMTINYX_DIR)

    echo "clean done"

 

l         armtinyx.patch/config/cf/cross.def

 

#undef Arm32Architecture

#undef i386Architecture

#undef Arm32Architecture

#undef Arm32Architecture

 

#define Arm32Architecture

 

#undef OptimizedCDebugFlags

 

#define OptimizedCDebugFlags    -Os

#define ServerCDebugFlags   -Os

#undef StandardDefines

#define StandardDefines     -Dlinux -D__arm__ -D_POSIX_SOURCE -D_BSD_SOURCE -D_GNU_SOURCE /

     -DX_LOCALE -DUSE_DYNAMIC_LC -DUSE_UTF8_LOADER -DUSE_DYNAMIC_LOADER

 

#define PreIncDir

#undef PostIncDir

#undef CcCmd

#define CcCmd arm-linux-gcc -I$(ROOTFS_DIR)/usr/include/ncurses -I$(ROOTFS_DIR)/usr/include

#undef HasCplusplus

#define HasCplusplus NO

#undef CplusplusCmd

#define CplusplusCmd NO

#define DoRanlibCmd YES

#define RanlibCmd arm-linux-ranlib

#undef ExtraLoadFlags

#define ExtraLoadFlags

#define FbNoPixelAddrCode

#undef TermcapLibrary

#define TermcapLibrary -L$(ROOTFS_DIR)/usr/lib -lncurses

#define NCursesLibName -L$(ROOTFS_DIR)/usr/lib -lncurses

#undef LdPostLib

#undef LdCmd

#define LdCmd arm-linux-ld

 

#undef ExtensionOSDefines

#define ExtensionOSDefines

 

#define ServerXdmcpDefines

 

#define GzipLibrary -L$(ROOTFS_DIR)/usr/local/lib -lz

 

#include <cross.rules>

 

l         armtinyx.patch/config/cf/host.def

 

#define KDriveXServer       YES

#define TinyXServer     YES    

#define XfbdevServer        YES

#define CrossCompiling      YES

#define ProjectRoot             /usr/X11R6

#define NothingOutsideProjectRoot   YES

 

#define HasFreetype2        NO 

#define HasFontconfig       NO

#define HasLibpng       NO     

#define HasZlib         NO     

 

#define HasExpat        NO     

#define BuildXprintClients  NO

#define TouchScreen     YES

#define HasTsLib        YES   

#define BuildDocs       NO    

#define BuildXF86DRI        NO

#define BuildGlxExt     NO    

#define BuildOSMesaLib      NO

#define BuildLowMem     NO    

#define BuildIPv6       NO    

 

#define HasMTRRSupport          NO

#define UseX86Emu               NO

#define XF86INT10_BUILD         X86INT10_STUB

#define BuildAppgroup           NO

#define BuildDBE                NO

#define BuildLBX                NO

#define HasMTRRSupport          NO

#define UseX86Emu               NO

#define XF86INT10_BUILD         X86INT10_STUB

#define BuildAppgroup           NO

#define BuildDBE                NO

#define BuildLBX                NO

 

#define BuildFonts              YES

#undef  BuildXF86RushExt

#define BuildXF86RushExt        NO

#undef  BuildRender

#define BuildRender             YES

#define UseRgbTxt               YES

#define BuildFontServer         NO

#define BuildClients            NO

#define BuildFonts              YES

#undef  BuildXF86RushExt

#define BuildXF86RushExt        NO

#undef  BuildRender

#define BuildRender             YES

#define UseRgbTxt               YES

#define BuildFontServer         NO

#define OmitSnfSupport          YES

#define  XdecMultiDepthServer  NO

#define  XsunServer            NO

#define  Xsun24Server          NO

#define  XsunMonoServer        NO

#define  XsunLynxServer        NO

#define  XSavageServer         NO

#define  XIgsServer            NO

#define  XTridentServer        NO

#define  XchipsServer          NO

#define  Xmach64Server         NO

#define  Xi810Server           NO

#define  XSis530Server         NO

#define  XTrioServer           NO

#define  XipaqServer           NO

#define  XTS300Server          NO

#define  XItsyServer           NO

#define  XvesaServer           NO

#define  XDarwinServer         NO

 

#define XF86CardDrivers         fbdev

#define XInputDrivers       mouse keyboard

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章