以下是在我机器上的cross compile 过程:
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.建立host.def修改cross.def
最后会贴出来
4.tslib
(1)在host.def中应加入如下语句:
#define TouchScreen YES
#define HasTsLib YES
(2)并将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/lib/X11/Imakefile
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer
修改为
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer
6-编译
make World
make install
遇到的问题:
1
#error "Unsupported size of `int' type!"
#error "Unsupported size of `long' type!"
把armtinyx/lib/freetype2/freetype/config/ftconfig.h
的
#define FT_CHAR_BIT CHAR_BIT
修改为
#define FT_CHAR_BIT 8
2
编译ucs2any 缺少libXaw.a,libXmu.a 等文件
修改armtinyx/fonts/util/Makefile
765行:DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)
为
DEPLIBS =
如果是第一次编译,要在编译后才会有Makefile文件,
从新编译时会删除掉以前的文件,所以要等到文件被删除了之后又自动生成了的时候再改。
等以后有空测一下~
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 /ext/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
cross.def:
#if 1
#undef i386Architecture
#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
#undef CcCmd
#define StdIncDir /usr/include/linux
#define PreIncDir
#undef PostIncDir
#define PostIncDir /usr/local/arm/4.2.2-eabi/usr/include
#define CcCmd arm-linux-gcc
#undef CplusplusCmd
#define HasCplusplus NO
#define CplusplusCmd
#define DoRanlibCmd YES
#define RanlibCmd 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/usr/local/arm/4.2.2-eabi/lib/
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines /**/
#define HostCcCmd cc
#endif
#include <cross.rules>