由于需要,前面一段时间搜索了一下网上关于tinyX编译的文章,国内网站没有什么有用的文章(也可能是我没有看懂)。想下载tinyX的代码,结果只下载了X的代码。后面经过一番折腾,终于交叉编译tinyx成功,过程简单,特写出来共享一下。当然在freedesktop.org上你可以找到更详细的指导!
1/代码:您可以在http://webcvs.freedesktop.org/xserver/xserver/下载到tinyX的代码,由于我的linux机器无法连接到internet,所以在window下手动下载了代码,这里可能需要你一个个文件下载,我没有发现已经打包好的。要不你在仔细找找!
2/编译:在下载了你想要的库后,你会发现它里面有个编译脚本,这个只是普通编译的脚本,如果想要交叉编译,需要修改一下。
1)编译之前请检查一下你的工具配置情况(这一点很重要):
autoconf --version must report 2.59 or later
automake --version must report 1.9.x
libtool --version must report 1.5 (available from http://ftp.gnu.org/gnu/libtool/ if your distribution doesn't have it)
pkg-config --version must report 0.9.0 or later
2)问题:
如果遇到这种问题:
checking for pkg-config... /opt/gnome2/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for XDMCP... yes checking for XdmcpWrap in -lXdmcp... yes checking for XEPHYR... yes checking for XSERVER... configure: error: Package requirements (randrproto renderproto fixesproto damageproto xextproto xfont xproto xtrans xau compositeproto resourceproto recordproto xdmcp xdmcp) were not met. Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively you may set the XSERVER_CFLAGS and XSERVER_LIBS environment variables to avoid the need to call pkg-config. See the pkg-config man page for more details. *** error during stage configure of xserver: could not configure module *** [32/38] 这可能是.pc文件问题,请做以下链接:
cd /opt/fdo/lib/pkgconfig ln -s randr.pc randrproto.pc ln -s render.pc renderproto.pc ln -s fixesext.pc fixesproto.pc ln -s damageext.pc damageproto.pc ln -s xext.pc xextproto.pc ln -s compositeext.pc compositeproto.pc ln -s resourceext.pc resourceproto.pc ln -s recordext.pc recordproto.pc
3)编译脚本:XserverBuildScript这是它的编译脚本,有个问题,每次运行它都要重头开始。有时间哪位兄弟修改一下,
免得每次编译都要花很长时间,特别是在虚拟机上。编译脚本如下:
cvs login is no longer required when using cvs.freedesktop.org. if [ -z "$PKG_CONFIG_PATH" ]; then export PKG_CONFIG_PATH=/opt/fdo/lib/pkgconfig else export PKG_CONFIG_PATH="/opt/fdo/lib/pkgconfig:$PKG_CONFIG_PATH" fi cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xproto pushd Xproto ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xdmcp pushd Xdmcp ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co XExtensions pushd XExtensions ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co xtrans pushd xtrans ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xau pushd Xau ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co X11 pushd X11 ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xext pushd Xext ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Randr pushd Randr ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Render pushd Render ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xrender pushd Xrender ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xrandr pushd Xrandr ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co FixesExt pushd FixesExt ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co DamageExt pushd DamageExt ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xfont pushd Xfont ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co ResourceExt pushd ResourceExt ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co RecordExt pushd RecordExt ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co CompositeExt pushd CompositeExt ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co xkbfile pushd xkbfile ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xserver co xserver pushd xserver ./autogen.sh --prefix=/opt/fdo --enable-composite make sudo install -d /opt/fdo/bin sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xfixes pushd Xfixes ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xcomposite pushd Xcomposite ./autogen.sh --prefix=/opt/fdo make sudo make install popd cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xlibs co Xdamage pushd Xdamage ./autogen.sh --prefix=/opt/fdo make sudo make install popd # http://cvs.freedesktop.org/xapps/ wget http://www.freedesktop.org/xapps/release/xcompmgr-1.1.tar.gz tar zxf xcompmgr-1.1.tar.gz pushd xcompmgr-1.1 ./autogen.sh --prefix=/opt/fdo make sudo make install popd # to start server, try something like... sudo /opt/fdo/bin/Xvesa :1 & xterm -display :1 # in xterm... export LD_LIBRARY_PATH="/opt/fdo/lib:$LD_LIBRARY_PATH" /opt/fdo/bin/xcompmgr
如果你想交叉编译,请修改一下./autogen.sh --prefix=/opt/fdo--》./autogen.sh --prefix=/opt/fdo --host=arm-linux --build=i386-linux
当然后面加的需要根据你的实际情况,如果你的交叉编译器是arm-unknown-linux-gnu-*(gcc),你可以改为--host=arm-unknown-linux-gnu.
运行脚本即可。
3/运行
在您的调试板上,运行一下试试看,别忘了:export DISPLAY=:0
如果出现了一个带光标的窗口,恭喜,成功!