移植wxX11到开发板上
2012-05-18 12:25
148 查看
最近几天由于工作安排,要将wxX11程序移植到arm开发板上。一连工作了好几天,终于可以在板子上显示出一个“X”号,并且可以运行wxWidgets里面的程序,算是成功了。现就一些步骤总结如下。基本上跟网上说的差不多。
由于我们的开发所用的板子现在用不到tslib这样的触摸屏支持,所以这里没有编译。
㈠编译zlib-1.2.5
⒈export CC=arm-linux-gcc
⒉./configure --prefix=/path/to/install
--eprefix=/path/to/install
⒊make
⒋make install -k -i
⒌unset CC
㈡编译ncurses
⒈export CC=arm-linux-uclibc-gcc
⒉./configure --prefix=/path/to/install --host=arm-linux --target=arm-linux --with-build-cc=gcc --with-build-cpp=g++ --without-ada --enable-widec --with-normal
⒊make HOSTCC=gcc CXX=arm-linux-uclibc-g++ && make install
㈢编译tinyx
⒈下载七个压缩文件(当然也可以根据自己的需要下载)
⒉-解压缩
一定要使用命令解压,而且要分别解压。
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 armtinyx
cd armtinyx
lndir ../xc/
⒋在 armtinyx/config/cf目录下修改cross.def文件并添加host.def文件(详细文件在下边,在cross.def中设置好你的编译器的路径,在host.def中设置好你的安装路径)
⒌在/armtinyx/lib/X11/Imakefile
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer
修改为
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer
⒍make World
⒎make install
⒏将/path/to/install/目录下的文件拷到目标板上,然后设置一下环境变量export PATH=$PATH:/path/to/install/bin,然后运行
Xfbdev,会出现如下错误
Could not open RGB file "/usr/local/arm/X11R6/lib/X11/rgb.txt"; will use built-in copy.
这时,在自己电脑的linux系统上找一个rgb.txt拷到板子上相应的路径下就可以。
再次运行,会出现
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/misc/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/TTF/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Speedo/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Type1/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/CID/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/75dpi/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/100dpi/, removing from list!
Fatal server error:
could not open default font 'fixed'
Can't deallocate console 2 errno 16
这时在电脑找到misc文件夹,拷到相应的目录
再次运行,板子上出现一个“X”,则运行成功
注:我是这方面的一个初学者,当我修改了tinyx里的源文件之后,可以进行make World,但是不能make install,不晓得是为什么。
㈣编译和运行wxX11
⒈下载wxWidgets源码包,目前的版本为2.8.12。
⒉解压缩并进入源代码目录
tar zxvf wxWidgets-2.8.12.tar.gz
cd wxWidgets-2.8.12
⒊几个export命令要设置一下(这是我当时的配置)
export PATH=$PATH:/buildroot/build_arm/staging_dir/bin
export CC=arm-linux-uclibc-gcc
export CXX=arm-linux-uclibc-g++
export CFLAGS="-I/home/wxX11/wxX11-arm/include"
export CXXFLAGS="-I/home/wxX11/wxX11-arm/include"
export LDFLAGS="-L/home/wxX11/wxX11-arm/lib"
export CPPFLAGS="-I/home/wxX11/wxX11-arm/include"
⒋运行configure,这里用到的configure命令为:
./configure --prefix=/home/wxX11/wxX11-arm-static --host=arm-linux --target=arm-linux --build=i686-pc-linux --with-x11 --without-gtk --enable-no_rtti --enable-no_exceptions --disable-threads --disable-sockets --disable-joystick
--disable-mdi --disable-printarch --disable-postscript --disable-resources --disable-prologio --with-zlib=builtin --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --disable-shared --enable-static X11_CFLAGS=" -I/home/wxX11/wxX11-arm/include/X11"
X11_LIBS="-L/home/wxX11/wxX11-arm/lib"
make
make install
⒌运行wxWidgets demo,这里的程序放在了sample目录下,这里有一些程序,只要进入相应的文件夹下,直接运行make就可以了,然后再生成的二进制可执行程序拷到板子上去运行,这里我们选checklst
cd samples/checklst
make
将可执行程序checklst拷到目标板上
这里要注意,首先要在目标板上运行Xfbdev这一个程序,出现一个小十字架,然后再运行checklst程序。
这里要作如下设置:
首先设置目标板板上的两个环境变量:
export PATH=$PATH:/home/wxX11/wxX11-arm/bin,这里设的是Xfbdev这个程序的地址
然后
export DISPLAY=127.0.0.1:0
然后就可以运行我们的checklst程序,首先转到该程序所在的目录(我这里是/home)
cd /home
Xfbdev &
./checklst
这样,checklst程序就运行起来了。可以在目标板上插入鼠标对其进行操作。
附:
cross.def:
/* $XFree86: xc/config/cf/cross.def,v 1.3 2002/04/04 14:05:33 eich Exp $ */
/*
* This file contains redefinitions of some symbols to enable
* cross compilation: e.g. paths for include files and paths to
* compiler images. It will have to be edited to reflect these
* given your local configuration.
*/
#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
#define PreIncDir /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include
/*
*#define StdIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
*#define PreIncDir
*/
#undef PostIncDir
#define PostIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
#define CcCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-gcc -L/buildroot/build_arm/staging_dir/lib -I/buildroot/build_arm/staging_dir/include
#undef CplusplusCmd
#define HasCplusplus YES
#define CplusplusCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-g++
#define DoRanlibCmd YES
#define RanlibCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -L/home/wxX11/wxX11-arm/lib -lncurses
#define NCursesLibName -L/home/wxX11/wxX11-arm/lib -lncurses
#undef LdCmd
#define LdCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ld
#undef LdPostLib
#define LdPostLib -L/buildroot/build_arm/staging_dir/lib
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines /**/
#define HostCcCmd cc
#define GzipLibrary -L/home/wxX11/wxX11-arm/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/
*/
#endif
#include <cross.rules>
host.def:
#define TinyXServer YES
#define TouchScreen NO
#define HasTsLib NO
#undef XfbdevServer
#define XfbdevServer YES
#define BuildServersOnly YES
#undef CrossCompiling
#define CrossCompiling YES
#define XF86Server NO
//=======================================
#ifndef HasNCurses
#define HasNCurses YES
#endif
#ifndef HasZlib
#define HasZlib YES
#endif
//=========================================================
#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 /path/to/install
#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
由于我们的开发所用的板子现在用不到tslib这样的触摸屏支持,所以这里没有编译。
㈠编译zlib-1.2.5
⒈export CC=arm-linux-gcc
⒉./configure --prefix=/path/to/install
--eprefix=/path/to/install
⒊make
⒋make install -k -i
⒌unset CC
㈡编译ncurses
⒈export CC=arm-linux-uclibc-gcc
⒉./configure --prefix=/path/to/install --host=arm-linux --target=arm-linux --with-build-cc=gcc --with-build-cpp=g++ --without-ada --enable-widec --with-normal
⒊make HOSTCC=gcc CXX=arm-linux-uclibc-g++ && make install
㈢编译tinyx
⒈下载七个压缩文件(当然也可以根据自己的需要下载)
⒉-解压缩
一定要使用命令解压,而且要分别解压。
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 armtinyx
cd armtinyx
lndir ../xc/
⒋在 armtinyx/config/cf目录下修改cross.def文件并添加host.def文件(详细文件在下边,在cross.def中设置好你的编译器的路径,在host.def中设置好你的安装路径)
⒌在/armtinyx/lib/X11/Imakefile
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer
修改为
#if (BuildServersOnly || !BuildX11Lib) && !XnestServer && !BuildGLXLibrary && !BuildClients && !XdmxServer && !TinyXServer
⒍make World
⒎make install
⒏将/path/to/install/目录下的文件拷到目标板上,然后设置一下环境变量export PATH=$PATH:/path/to/install/bin,然后运行
Xfbdev,会出现如下错误
Could not open RGB file "/usr/local/arm/X11R6/lib/X11/rgb.txt"; will use built-in copy.
这时,在自己电脑的linux系统上找一个rgb.txt拷到板子上相应的路径下就可以。
再次运行,会出现
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/misc/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/TTF/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Speedo/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/Type1/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/CID/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/75dpi/, removing from list!
Could not init font path element /home/wxX11/wxX11-arm/lib/X11/fonts/100dpi/, removing from list!
Fatal server error:
could not open default font 'fixed'
Can't deallocate console 2 errno 16
这时在电脑找到misc文件夹,拷到相应的目录
再次运行,板子上出现一个“X”,则运行成功
注:我是这方面的一个初学者,当我修改了tinyx里的源文件之后,可以进行make World,但是不能make install,不晓得是为什么。
㈣编译和运行wxX11
⒈下载wxWidgets源码包,目前的版本为2.8.12。
⒉解压缩并进入源代码目录
tar zxvf wxWidgets-2.8.12.tar.gz
cd wxWidgets-2.8.12
⒊几个export命令要设置一下(这是我当时的配置)
export PATH=$PATH:/buildroot/build_arm/staging_dir/bin
export CC=arm-linux-uclibc-gcc
export CXX=arm-linux-uclibc-g++
export CFLAGS="-I/home/wxX11/wxX11-arm/include"
export CXXFLAGS="-I/home/wxX11/wxX11-arm/include"
export LDFLAGS="-L/home/wxX11/wxX11-arm/lib"
export CPPFLAGS="-I/home/wxX11/wxX11-arm/include"
⒋运行configure,这里用到的configure命令为:
./configure --prefix=/home/wxX11/wxX11-arm-static --host=arm-linux --target=arm-linux --build=i686-pc-linux --with-x11 --without-gtk --enable-no_rtti --enable-no_exceptions --disable-threads --disable-sockets --disable-joystick
--disable-mdi --disable-printarch --disable-postscript --disable-resources --disable-prologio --with-zlib=builtin --with-libpng=builtin --with-libjpeg=builtin --with-libtiff=builtin --disable-shared --enable-static X11_CFLAGS=" -I/home/wxX11/wxX11-arm/include/X11"
X11_LIBS="-L/home/wxX11/wxX11-arm/lib"
make
make install
⒌运行wxWidgets demo,这里的程序放在了sample目录下,这里有一些程序,只要进入相应的文件夹下,直接运行make就可以了,然后再生成的二进制可执行程序拷到板子上去运行,这里我们选checklst
cd samples/checklst
make
将可执行程序checklst拷到目标板上
这里要注意,首先要在目标板上运行Xfbdev这一个程序,出现一个小十字架,然后再运行checklst程序。
这里要作如下设置:
首先设置目标板板上的两个环境变量:
export PATH=$PATH:/home/wxX11/wxX11-arm/bin,这里设的是Xfbdev这个程序的地址
然后
export DISPLAY=127.0.0.1:0
然后就可以运行我们的checklst程序,首先转到该程序所在的目录(我这里是/home)
cd /home
Xfbdev &
./checklst
这样,checklst程序就运行起来了。可以在目标板上插入鼠标对其进行操作。
附:
cross.def:
/* $XFree86: xc/config/cf/cross.def,v 1.3 2002/04/04 14:05:33 eich Exp $ */
/*
* This file contains redefinitions of some symbols to enable
* cross compilation: e.g. paths for include files and paths to
* compiler images. It will have to be edited to reflect these
* given your local configuration.
*/
#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
#define PreIncDir /usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include
/*
*#define StdIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
*#define PreIncDir
*/
#undef PostIncDir
#define PostIncDir /buildroot/build_arm/staging_dir/lib/gcc/arm-linux-uclibc/3.4.2/include
#define CcCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-gcc -L/buildroot/build_arm/staging_dir/lib -I/buildroot/build_arm/staging_dir/include
#undef CplusplusCmd
#define HasCplusplus YES
#define CplusplusCmd /buildroot/build_arm/staging_dir/bin/arm-linux-uclibc-g++
#define DoRanlibCmd YES
#define RanlibCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ranlib
#undef ExtraLoadFlags
#define ExtraLoadFlags
#define FbNoPixelAddrCode
#undef TermcapLibrary
#define TermcapLibrary -L/home/wxX11/wxX11-arm/lib -lncurses
#define NCursesLibName -L/home/wxX11/wxX11-arm/lib -lncurses
#undef LdCmd
#define LdCmd /buildroot/build_arm/staging_dir/bin/arm-linux-ld
#undef LdPostLib
#define LdPostLib -L/buildroot/build_arm/staging_dir/lib
#undef ExtensionOSDefines
#define ExtensionOSDefines
#define ServerXdmcpDefines /**/
#define HostCcCmd cc
#define GzipLibrary -L/home/wxX11/wxX11-arm/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/
*/
#endif
#include <cross.rules>
host.def:
#define TinyXServer YES
#define TouchScreen NO
#define HasTsLib NO
#undef XfbdevServer
#define XfbdevServer YES
#define BuildServersOnly YES
#undef CrossCompiling
#define CrossCompiling YES
#define XF86Server NO
//=======================================
#ifndef HasNCurses
#define HasNCurses YES
#endif
#ifndef HasZlib
#define HasZlib YES
#endif
//=========================================================
#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 /path/to/install
#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
相关文章推荐
- S3C6410移植linux-2.6.39 笔记(一)-搭建开发板环境
- live555 交叉编译移植到海思开发板
- WinCE5.0 SMDK2410 BSP在GEC2410开发板上的移植(18)-Nand Flash驱动(FMD)及其简析(1)
- 4412开发板移植Opencv资料
- 移植spca5xx-v4l1goodbye到立宇泰ARMSYS244O开发板
- 在ARMSYS(S3C44B0X开发板)上进行uClinux内核移植的总结
- boa服务器在S3C2410开发板上移植
- linux-2.6.32在mini2440开发板上移植--移植DM9000 网卡驱动
- jz2440开发板移植U-boot之修改代码支持DM9000网卡
- 移植DNS服务bind到MPC8377E开发板
- 【操作详解】终于成功移植Mplayer到OK6410开发板上了,发帖详述移植全过程!(转载)
- 基于Ubuntu14.04环境下编译qt-everywhere-opensource-src-5.6.1配置qt creater 的arm编译器环境并移植到tiny210v2开发板上
- 第十九期 基于HG255d_U-Boot的uIP移植《路由器就是开发板》
- 移植Andorid4.0.4到FS100开发板 - 步骤及问题汇总
- linux-2.6.32在mini2440开发板上移植之DM9000网卡移植
- 第五章:基于九鼎X210开发板移植2014.10版U-boot之初始化内存
- 移植最新Uboot到JZ2440开发板
- 开发板的移植过程,API~章节学习记录
- x210v3开发板u-boot-2012.10移植之五---点亮led进行调试
- RTEMS针对MPC8313开发板的移植