arm-linux mono移植,tinyx移植到ARM

由于想移植XMAME过ARM9那里遇到界面无法显示的问题。之前移植的SDL还出问题出现。所以改用移植TINYX试试看效果如何

在移植的过程中发现了。网上很多文章都很假的。。乱来的。根本都是复制来复制去。没什么意义阿!编译过程中出现了N多的问题。只有自己慢慢编译。出现一个问题再找一个问题。这样一步一步的编译成功的!

首先要下载

zlib-1.2.3.tar.gz

ncurses-5.4.tar.gz

tslib-1.4.tar

交叉编译才能正确编译TINYX的上面的软件在CHINAUNIX都有下的

ncurses 交叉编译./configure \

--prefix=$PWD/bulid \

--host=arm-linux \

--target=arm-linux \

--with-build-cc=cc \

--with-build-cpp=cpp \

--with-shared \

--with-normal

make

make install

zlib 交叉编译

export CC=arm-linux-gcc

./configure -shared --prefix=$PWD/usr

make && make install

tslib交叉编译

./autogen.sh  --host=arm-linux

./configure --host=arm-linux --target=arm-linux --prefix=$PWD/build --enable-inputapi=yes

export PLUGIN_DIR=tslib-1.3/plugins

vim config.h在里面加上 #define USE_INPUT_API 1 这一句的

make;make install

然后把相应的库文件拷贝到交叉编译环境的LIB下

然后到

XFree86-4.8-src-1   -7.taz

下载

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

cd xc/config/util/

make lndir

cp lndir /usr/local/bin/

和xc在同一个目录下建立一个文件夹

mkdir arm

cd arm

lndir ../xc/

arm/config/cf目录下修改cross.def文件并添加host.def文件

cross.def

看清楚你编译环境的路径

#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 /usr/local/arm/3.4.5/bin/arm-linux-gcc -L/usr/local/arm/3.4.5/arm-linux/lib -I/usr/local/arm/3.4.5/arm-linux/include

#undef CplusplusCmd

#define HasCplusplus NO

#define CplusplusCmd NO

#define DoRanlibCmd YES

#define RanlibCmd /usr/local/arm/3.4.5/bin/arm-linux-ranlib

#undef ExtraLoadFlags

#define ExtraLoadFlags

#define FbNoPixelAddrCode

#undef TermcapLibrary

#define TermcapLibrary -L/root/Desktop/ncurses/lib -lncurses

#undef LdPostLib

#define LdPostLib -L/usr/local/arm/3.4.5/arm-linux/lib

#undef LdCmd

#define LdCmd /usr/local/arm/3.4.5/bin/arm-linux-ld

#undef ExtensionOSDefines

#define ExtensionOSDefines

#define ServerXdmcpDefines  /**/

#define GzipLibrary -L../lib -lz

/*

#define HostCcCmd /usr/local/arm/3.4.5/bin/arm-linux-gcc -L/usr/local/arm/3.4.5/arm-linux/lib/ -I/usr/local/arm/3.4.5/arm-linux/include/

*/

#include

host.def

#define TinyXServer     YES

#define TouchScreen YES

#define HasTsLib YES

#define XfbdevServer    YES

#define BuildServersOnly YES

#define CrossCompiling 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 ProjectRoot             /usr/local/arm/3.4.5/KK-3.4.5

#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

在programs/Xserver/hw/tinyX/linux/tslib.c中对触摸屏的查找是根据TsNames数组来进行的,其中可能没有开发板上的触摸屏名称。在开发板Linux的/dev下查找,一般是带ts的,将其加入TsNames数组。

此时编译会报错,找不到tslib.h。发现该文件在Tslib/src中,于是将tslib.h拷入tinyx/programs /Xserver/hw/tinyX/linux/即可。继续编译出现ld找不到-lts问题,将编译好的tslib/lib文件夹中文件拷入arm- linux-gcc/arm-linux/lib。

在lib/X11/Imakefile

#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer

修改为

#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer

然后 makr World

make install

在编译过程中可能会出现缺少LIBXIO。O库

cd programs/Xserver/os/tiny

make lbxio.o

就可以了

编译会遇到的错误:

(1)#error "Unsupported size of `int' type!"

#error "Unsupported size of `long' type!"

浮点数例外

修改方法:把arm/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 等文件修改arm/fonts/util/Makefile

767行:DEPLIBS = $(DEPXAWLIB) $(DEPXMULIB) $(DEPXTOOLLIB) $(DEPXLIB)

DEPLIBS =

运行

按照我的配置编译没有字体产生,所以要到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文件夹就可以了。

运行:Xfbdev.

出现错误:

_XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6

_XSERVTransOpen: transport open failed for inet6/linux:0

_XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6

Could not init font path element /usr/loacal/arm/3.4.5/KK-3.4.5/lib/X11/fonts/TTF/, removing from list!

Could not init font path element /usr/local/arm/3.4.5/KK-3.4.5/lib/X11/fonts/Speedo/, removing from list!

Could not init font path element /usr/local/arm/3.4.5/KK-3.4.5/lib/X11/fonts/Type1/, removing from list!

Could not init font path element /usr/local/arm/3.4.5/KK-3.4.5/lib/X11/fonts/CID/, removing from list!

Fatal server error:

could not open default font ‘fixed’

运行Xfbdev –help,它提供了两个参数fp和fn用于指定字体的路径和字体名称,尝试指定这两个参数

./Xfbdev -fp /usr/local/arm/3.4.5/KK-3.4.5/lib/X11/fonts/75dpi/ -fn -adobe-utopia-bold-i-normal--12-120-75-75-p-70-iso10646-1 -fc -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1l

-adobe-utopia-bold-i-normal--12-120-75-75-p-70-iso10646-1 -fc -adobe-times-medium-r-normal--8-80-75-75-p-44-iso8859-1l 可在当前75dbi目录下fonts.dir找到

就这样可以顺利运行了。中间有个十字的东西。

文章出处:飞诺网(

你可能感兴趣的:(arm-linux,mono移植)