免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2112 | 回复: 0

arm上tinyx的编译 [复制链接]

论坛徽章:
0
发表于 2007-09-14 11:57 |显示全部楼层

                                                    在嵌入式系统中tinyx使用的还是挺多的,前一段时间编译了一下tingyx,是从xfree86-4.6.0編的。falls建议用xorg编,但是xorg依赖的库还要自己挨个编,比较麻烦,准备先搞一个能用的,以后再用xorg编一个也可以。现在把编译过程中的一些东西记录下来。在编译的时候参考了absurd的文档,在这表示感谢,呵呵。
    首先把XFree86的包解开,看里面的BUILD.txt文档。跟着里面作就可以了,创建一些连接。然后创建host.def,修改cross.def,修改lib/X11/Imakefile,在第一层的#if中增加 && !TinyXServer条件,这样编译tinyx的时候也会编译X11中的库,不加这个条件会出错。
   
host.def:
#define TinyXServer     YES
#define XfbdevServer    YES
#define BuildServersOnly YES
#define XF86Server      NO
#define XdmxServer      NO
#define XnestServer     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 XVirtualFramebufferServer   NO
#define XprtServer      NO
#define BuildXprintClients  NO
#define CrossCompiling      YES
#define ProjectRoot             /usr/local/dtv
#define NothingOutsideProjectRoot   YES
#define BuildLibraries         YES
#define BuildDocs       NO
#undef  BuildRender
#define BuildRender             YES
#define UseRgbTxt               YES
#define OmitSnfSupport          YES
#define HasMTRRSupport          NO
#define UseX86Emu               NO
#define BuildGlxExt     NO
#define XF86INT10_BUILD         X86INT10_STUB
#define XInputDrivers       mouse keyboard
cross.def:
/* $XFree86: xc/config/cf/cross.def,v 1.3 2002/04/04 14:05:33 eich Exp $ */
/*
* This file contains redefinitions of some symbols to enable
* cross compilation: e.g. paths for include files and paths to
* compiler images.  It will have to be edited to reflect these
* given your local configuration.
*/
#undef i386Architecture
#undef Arm32Architecture
#define Arm32Architecture
#undef OptimizedCDebugFlags
#define OptimizedCDebugFlags    -O2
#define ServerCDebugFlags   -O2
#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
#undef CcCmd
#define StdIncDir
#define PreIncDir
#undef PostIncDir
#define PostIncDir
#define CcCmd /opt/cross-compile-arm/gcc-3.3/bin/arm-linux-gcc -L/opt/cross-compile-arm/gcc-3.3/arm-linux/lib/ -I/opt/cross-compile-arm/gcc-3.3/arm-linux/include/
#undef CplusplusCmd
#define HasCplusplus NO
#define CplusplusCmd NO
#define DoRanlibCmd YES
#define RanlibCmd /opt/cross-compile-arm/gcc-3.3/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -L/usr/lib/ -lncurses
#undef LdPostLib
#define LdPostLib
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines  /**/
/*
#define HostCcCmd /opt/cross-compile-arm/gcc-3.3/bin/arm-linux-gcc -L/opt/cross-compile-arm/gcc-3.3/arm-linux/lib/ -I/opt/cross-compile-arm/gcc-3.3/arm-linux/include/
*/
#define HostCcCmd gcc
#include
    最后make命令:make World CROSSCOMPILEDIR=/opt/cross-compile-arm/gcc-3.3/bin/就可以了。速度比较快,我的C2.4G,512M的机器用了20分钟左右,同样的CPU,1G内存编译用了大概10分钟。
    编译好了以后,拷贝到板子上运行:Xfbdev -fp /usr/share/fonts -fn -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso8859-1 -fc -misc-fixed-medium-r-normal--18-120-100-100-c-90-iso8859-1。如果一切正常,X11会起来的,呵呵。其中字体部分可以通过fontconfig配置好,然后直接运行Xfbdev就可以了。
    从XFree86编译tinyx有时候确实比较麻烦。首先它的Imake这种方式不怎么习惯;然后如果要编译XFree86可能还有不少的问题,所以我编译的时候只编译了一个tinyx,把XFree86 cut掉了。不过你如果愿意出一个错误改一个错误也是可以编译通过的,因为我在板子上只需要tinyx,所以就没有一点一点改了,直接编tinyx好了。xorg使用的是configure的方式,什么时候有时间用xorg编一个试试。
    另外,编译tinyx在linux kernel2.4运行时出错。NR_KEY在2.4的内核中是128,在2.6的内核中是256,因此数组越界。在tinyx中把NR_KEYS设置为128就可以了。
   
    还有如果在tinyx中新加一个硬件显卡的framebuffer驱动也比较麻烦。主要步骤如下:修改xfree86.cf文件;修改Xserver目录下的Imakefile文件;修改tinyx目录下的Imakefile文件;增加tinyx相应的驱动(在tinyx目录下增加驱动的目录和相应的文件)。
               
               
               
               
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/37325/showart_381681.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP