免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1284 | 回复: 0
打印 上一主题 下一主题

交叉编译tinyx4.8 from xfree86 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-13 12:56 |只看该作者 |倒序浏览
系统:fedora7
交叉编译环境:crosstools_3.4.1_softfloat
tinyx版本:4.8.0
tslib版本:1.4
ncurses版本:5.7
zlib:1.2.3
需要先交叉编译好这些包
1-解压缩
一定要使用命令解压,而且要分别解压。
tar -zxvf XFree86-4.8.0-src-1.tgz
tar -zxvf XFree86-4.8.0-src-2.tgz
tar -zxvf XFree86-4.8.0-src-3.tgz
tar -zxvf XFree86-4.8.0-src-4.tgz
tar -zxvf XFree86-4.8.0-src-5.tgz
tar -zxvf XFree86-4.8.0-src-6.tgz
tar -zxvf XFree86-4.8.0-src-7.tgz
2-建立一个临时目录
cd xc/config/util/
make lndir
cp lndir /usr/local/bin/
和xc在同一个目录下建立一个文件夹
mkdir armtinyx
cd armtinyx
lndir ../xc/
3-在 armtinyx/config/cf目录下修改cross.def文件并添加host.def文件(详细文件在下边)
4-加入触摸屏支持
(1)在host.def中应加入如下语句:
#define TouchScreen YES
#define HasTsLib YES
(2)并将tslib-1.0/src/tslib.h文件拷入armtinyx/programs/Xserver/hw/tinyX/linux(解决找不到tslib.h错误)
(3)将交叉编译好的tslib的lib文件夹(几个.so文件)拷贝到交叉编辑环境的arm-linux/lib下(解决ld找不到-lts错误)
注意:编译tslib的交叉编译器必须也要和编译tinyx一样是带软浮点的,不然执行上步会报出浮点不一样的错误
(4)在armtinyx/programs/Xserver/hw/tinyx/tinyx.h文件里添加
#define TOUCHSCREEN
(5)在/armtinyx/programs/Xserver/hw/tinyX/linux/tslib.c中对触摸屏的查找是根据TsNames数组来进行的,如果没有你的开发板上/dev下的触摸屏设备节点的话,将其添加到TsNames数组里。
static char *TsNames[] = {
  "/dev/event0",//我的/dev下的设备结点
  "/dev/ts",
  "/dev/touchscreen/0",
};
5-在/armtinyx/lib/X11/Imakefile
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer
修改为
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer
6-编译
make World
make install
7-运行
按照我的配置编译没有字体产生,所以要到xfree86.org网站下载Xfnts.tgz字体,根据路径放置字体,然后运行./Xfbdev
这是一个带黑白小格子的界面就启动起来了,界面中间有一个X形光标,点击触摸屏,光标移到到你点击的位置,这样就成功了。
这里还用强调的一点是:一定要使用Xfnts.tgz的字体,因为直接运行./Xfbdev,它会到Xfnts.tgz里的misc文件夹寻找合适的字体,不然的话就要指定字体了。
但是有一点直接运行./Xfbdev会启动的慢一点,如果指定了字体就会省去搜索字体的时间,启动就快了。
运行的时候还会有一个提示:
(WW) Could not open RGB file "/usr/local/arm/X11R6/lib/X11/rgb.txt"; will use built-in copy.
到网上找rgb.txt文件,直接放到X11文件夹就可以了。
编译会遇到的错误:
(1)#error "Unsupported size of `int' type!"
#error "Unsupported size of `long' type!"
浮点数例外
修改方法:
把rmtinyx/lib/freetype2/freetype/config/ftconfig.h

#define FT_CHAR_BIT  CHAR_BIT
修改为
#define FT_CHAR_BIT  8
原因是:/* `CHAR_BIT' (defined in limits.h) gives the number of bits in a      */
  /* `char' type.                                
这个CHAR_BIT 是在/usr/include/limits.h里定义的,CHAR_BIT=8,但是
#defien StdIncDir /usr/include 也还是不好使,但是在ubuntu 8.04里就好使,所以直接把CHAR_BIT该为8。
(2)编译ucs2any 缺少libXaw.a,libXmu.a 等文件
修改armtinyx/fonts/util/Makefile
767行:DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)

DEPLIBS =
如果是第一次编译,要在编译后才会有以上ftconfig.h和Makefile文件,
从新编译时会删除掉以前的文件,所以要等到文件被删除了之后又自动生成了的时候再改。
cross.def
#undef Arm32Architecture
#undef i386Architecture
#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 StdIncDir /usr/include
#define PreIncDir /usr/include/linux
#undef PostIncDir
#define PostIncDir /usr/lib/gcc/i386-redhat-linux/4.1.2/include
#undef CcCmd
#define CcCmd /opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/bin/arm-linux-gcc -I/opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/arm-linux/include -L/opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/arm-linux/lib
#undef HasCplusplus
#define HasCplusplus NO
#undef CplusplusCmd
#define CplusplusCmd NO
#define DoRanlibCmd YES
#define RanlibCmd /opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -L/usr/lib -lncurses
#define NCursesLibName -L/usr/lib -lncurses
#undef LdPostLib
#define LdPostLib -L/opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/arm-linux/lib
#undef LdCmd
#define LdCmd /opt/EmbedSky/crosstools_3.4.1_softfloat/arm-linux/gcc-3.4.1-glibc-2.3.3/bin/arm-linux-ld
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines /**/
#define GzipLibrary -L$(ROOTFS_DIR)/usr/lib -lz
#define HostCcCmd /usr/bin/cc
#include
host.def
#define KDriveXServer       YES
#define TinyXServer     YES   
#define XfbdevServer        YES
#undef CrossCompiling
#define CrossCompiling      YES
#define XF86Server        NO
#define XnestServer     NO
#define XVirtualFramebufferServer   NO
#define XdmxServer      NO
#define XprtServer      NO
#define BuildFontServer         NO
#define BuildFonts              YES
#define BuildXF86RushExt        NO
#define HasXdmAuth        NO
#define BuildDocs       NO   
#define BuildIPv6       NO   
#define HasMTRRSupport          NO
#define UseX86Emu               NO
#define XF86INT10_BUILD         X86INT10_STUB
#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       keyboard    mouse
#define ProjectRoot             /usr/local/arm/X11R6
#define NothingOutsideProjectRoot   YES
#define BuildServersOnly YES
#define BuildRender             YES
#define UseRgbTxt               YES
#define OmitSnfSupport             YES
#define HasFreetype2        NO
#define HasFontconfig       NO
#define HasLibpng       NO   
#define HasZlib         NO   
#define HasExpat        NO   
#define TouchScreen     YES
#define HasTsLib        YES   
               
               
               

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP