交叉编译 Tiny-X for ARM
1下载源码XFree86-4.5.0-src
tar xvzf
XFree86-4.5.0-src-1.tgz
tar xvzf XFree86-4.5.0-src-2.tgz
tar xvzf
XFree86-4.5.0-src-3.tgz
tar xvzf XFree86-4.5.0-src-4.tgz
tar xvzf
XFree86-4.5.0-src-5.tgz
tar xvzf XFree86-4.5.0-src-6.tgz
tar xvzf
XFree86-4.5.0-src-7.tgz
cd xc/config/util/
make lndir
sudo cp
lndir /usr/local/bin
cd ~
mkdir armtinyx
cd armtinyx/
lndir
../Xfree86-4.5.0-src/xc/
2cross.def和host.def配置文件
在xc/config/cf下建立
cross.def和host.def文件如下
host.def
#define KDriveXServer YES
#define TinyXServer YES
#define
XfbdevServer YES
#define CrossCompiling YES
#define ProjectRoot
/home/zhepeng/TinyX
#define NothingOutsideProjectRoot YES
#define
HasFreetype2 NO
#define HasFontconfig NO
#define HasLibpng NO
#define
HasZlib NO
#define HasExpat NO
#define BuildXprintClients NO
#define
TouchScreen NO
#define HasTsLib NO
#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
BuildFonts YES
#undef BuildXF86RushExt
#define BuildXF86RushExt
NO
#undef BuildRender
#define BuildRender YES
#define UseRgbTxt NO
#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
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
#undef
CcCmd
#define StdIncDir /usr/local/arm/3.4/arm-linux/include
#define
PreIncDir /usr/local/arm/3.4/arm-linux/include
#undef PostIncDir
#define
PostIncDir /usr/local/arm/3.4/arm-linux/include
#define CcCmd
arm-linux-gcc
#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../lib -lncurses
#define NCursesLibName -L../lib -lncurses
#undef LdPostLib
#undef
LdCmd
#define LdCmd arm-linux-ld
#undef ExtensionOSDefines
#define
ExtensionOSDefines
#define ServerXdmcpDefines
#define GzipLibrary
-L../lib -lz
#i nclude
3修改部分文件
?
编辑armtinyx/programs/Xserver/hw/xfree86/common/compiler.h,删除outb之类的
空函
数。
第1435行开始
static __inline__ void
outb(unsigned short port,
unsigned char val)
{
}
static __inline__ void
outw(unsigned
short port, unsigned short val)
{
}
static __inline__ void
outl(unsigned
short port, unsigned int val)
{
}
static __inline__ unsigned
int
inb(unsigned short port)
{
return 0;
}
static
__inline__ unsigned int
inw(unsigned short port)
{
return 0;
}
static
__inline__ unsigned int
inl(unsigned short port)
{
return 0;
}
? 修改xc/programs/Xserver/hw/xfree86/fbdevhw/fbdevhw.c
删掉#i nclude
"asm/page.h" /* #define for PAGE_* */
添加# define PAGE_MASK
(~(getpagesize() - 1))
? 修改xc/programs/Xserver/hw/tinyx/linux/tslib.c
修
改成
if (n == 1)
{
if (event.pressure)
{
/*
* HACK
ATTACK. (static global variables used !)
* Here we test for the touch
screen driver actually being on the
* touch screen, if it is we send
absolute coordinates. If not,
* then we send delta's so that we can
track the entire vga screen.
*/
if (pengzhe == 1) {
?
修改cf下的X11.tmpl,使其生成静态库文件
将
#ifndef NormalLibFS
#define
NormalLibFS (!SharedLibFS | ForceNormalLib)
#endif
等之类修改成
#ifndef
NormalLibFS
#define NormalLibFS YES
#endif
?
修改/home/zhepeng/xfree86/xc/programs/Xserver/hw/xfree86/common下的
xf86Configure.c
添
加#define PATH_MAX 1024
? 修改/usr/local/arm/3.4/bin
将arm-linux-gcc,arm-linux-g++,arm-linux-ar,arm-linux-ld,
arm-linux-gcc都ln到
/usr/local/arm/3.4/arm-linux/bin下
ln -s
/usr/local/arm/3.4/include /usr/local/arm/3.4/arm-linux/
?
在运行一会后,在另外一个term中运行下面语句
cd programs/Xserver/os/tiny
make lbxio.
4编译安装
make World
CROSSCOMPILEDIR=/usr/local/arm/3.4/arm-linux/bin
make install
5运行TinyX
复制/usr/share/fonts/X11/75dpi下的字体到TinyX
/lib/X11/fonts/75dpi下
运行
./Xfbdev -fp
/home/zhepeng/TinyX/lib/X11/fonts/75dpi -fn
-adobe-courier-bold-r-normal--
8-80-75-75-m-50-iso8859-1 -fc
-adobe-times-medium-i-normal—8-80-75-75-p-42-
iso8859-1
即可
在
/home/zhepeng/TinyX/lib/X11添加rgb文件