分享
 
 
 

交叉编译场景分析(arm-linux)(六)--编译TinyX

王朝system·作者佚名  2007-01-23
窄屏简体版  字體: |||超大  

交叉编译场景分析(arm-linux)(六)--编译TinyX

转载时请注明出处:http://blog.csdn.net/absurd

1. 基本信息:

软件名称

TinyX

功能简述

TinyX是一个针对嵌入式系统设计的X Window,相对PC版的X Window而言,它占用的资源要少很多,服务器程序仅700多K,客户端的动态库约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

依赖关系

默认

readline

zlib

ncurses

前置条件

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

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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有