<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 交叉編譯場景分析(arm-linux)(六)

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

          ——
          作者: 時間:2007-04-18 來源:http://blog.csdn.net/absurd 收藏

          1.         基本信息:

          軟件名稱

           TinyX
           
          功能簡述

            TinyX是一個針對系統(tǒng)設(shè)計的X Window,相對PC版的X Window而言,它占用的資源要少很多,服務(wù)器程序僅700多K,客戶端的動態(tài)庫約2M(看你需要而定)多。
           
          下載地址
           http://www.xfree86.org
           
          軟件版本
           XFree86-4.5.0-src-1.tgz

          XFree86-4.5.0-src-2.tgz

          XFree86-4.5.0-src-3.tgz

          XFree86-4.5.0-src-4.tgz

          XFree86-4.5.0-src-5.tgz

          XFree86-4.5.0-src-6.tgz

          XFree86-4.5.0-src-7.tgz
           
          依賴關(guān)系
           默認(rèn)

          readline

          zlib

          ncurses
           
          前置條件
           源文件位置:$(WORK_DIR)/xc
            

          2.  過程分析

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

            修改這些配置文件是一種比較繁瑣的事情,特別對于新手來說,往往要經(jīng)歷修改配置文件-編譯-失敗-再修改配置文件這個循環(huán)好幾次。即使是對于有經(jīng)驗(yàn)的人來說,一次搞定也并非那么容易。這個過程講起來比較冗長,這里就不再多說,具體的配置文件可以參考構(gòu)建處方。

            按照BUILD.txt里的建議,我們決定建立一個臨時目錄,在這個臨時目錄里編譯,避免破壞原始文件。實(shí)踐證明這個建議很有用,因?yàn)楹苌俚谝淮尉幾g成功,重新編譯時不用再去解壓軟件包,可以節(jié)省不少時間。

          [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/

          現(xiàn)在我們把配置文件和patch文件拷貝進(jìn)來:

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

          編譯:

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

          出現(xiàn)下列錯誤:

          /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之類的空函數(shù)。

          重新編譯:

          [root@linux armtinyx] make

          出現(xiàn)下列錯誤:

          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的內(nèi)核,你可能要修改NR_KEYS的值為128,否則programs/Xserver/hw/tinyx/linux/keyboard.c里有內(nèi)存越界問題,造成無法運(yùn)行。

          l         若運(yùn)行時,發(fā)現(xiàn)觸摸屏不能使用,修改programs/Xserver/hw/tinyx/linux/tslib.c的數(shù)組TsNames,加入你使用的觸摸屏設(shè)備文件。若還是不行,檢查一下tslib需要的環(huán)境變量是否設(shè)置正確。 {{分頁}}

          3.         構(gòu)建處方

          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

           

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();