小组成员
:曹雪松 李桂林 李祥鑫 罗富中 宋旭鹏 徐文静 吴昊 赵阳把下面脚本加入~/.bashrc
init-crosscompile() {
export DISCIMAGE=/usr/local/xorg # 安装目录
export CROSS_COMPILE=arm-linux- # 交叉编译工具的前缀
# ARM-LINUX-GCC 的路径
export LD_LIBRARY_PATH=~/Application/arm-linux-gcc/4.4.3/lib:$LD_LIBRARY_PATH
export PATH=~/Application/arm-linux-gcc/4.4.3/bin:~/.local/bin:$PATH
# pkg-config 的路径
export PKG_CONFIG_PATH=/usr/local/xorg/lib/pkgconfig:/usr/local/xorg/share/pkgconfig/:$PKG_CONFIG_PATH
}
然后
$ source ~/.bashrc
$ init-crosscompile
AR=${CROSS_COMPILE}ar CC=${CROSS_COMPILE}gcc RANLIB=${CROSS_COMPILE}ranlib ./configure --prefix=$DISCIMAGE
make
make install
LDFLAGS="-L$DISCIMAGE/lib" CPPFLAGS="-I$DISCIMAGE/include" ./configure --prefix=$DISCIMAGE --host=${CROSS_COMPILE%-}
make
make install
AR=${CROSS_COMPILE}ar CC=${CROSS_COMPILE}gcc ./configure --prefix=$DISCIMAGE --host=${CROSS_COMPILE%-}
make
make install
./Configure dist --prefix=$DISCIMAGE
make CC="${CROSS_COMPILE}gcc" AR="${CROSS_COMPILE}ar r" RANLIB="${CROSS_COMPILE}ranlib"
make CC="${CROSS_COMPILE}gcc" AR="${CROSS_COMPILE}ar r" RANLIB="${CROSS_COMPILE}ranlib" install
./autogen.sh
make -f Makefile.plain install
jhbuildrc-7.6-sample
#-*- coding:utf-8 -*-
#!python
#######################################################################################
#
# 这是自动下载、编译和安装Xorg的脚本
# 把它拷贝成文件jhbuldrc-7.6,然后运行`jhbuild -f jhbuildrc-7.6 (modules...)'即可
#
#######################################################################################
# moduleset文件的路径
moduleset = '~/arm-X11/xorg-7.6.modules'
# 下载包的路径
checkoutroot = '~/arm-X11/xorg-7.6/'
modules = [ 'xorg' ]
prefix = os.environ['DISCIMAGE']
autogenargs = ' --disable-static'
autogenargs += ' --disable-dri '
autogenargs += ' --cache-file=' + checkoutroot + '/autoconf-cache'
# lots of people really like to always look in /var/log, but change if
# you want the log files out of place
autogenargs += ' --with-log-dir=/var/log'
autogenargs += ' --with-mesa-source=' + checkoutroot + '/mesa'
autogenargs += ' --enable-malloc0returnsnull'
os.environ['ACLOCAL'] = 'aclocal -I ' + prefix + '/share/aclocal/'
os.environ['INSTALL'] = os.path.expanduser('~/bin/install-check')
os.environ['PKG_CONFIG_PATH'] = '/usr/local/xorg/lib/pkgconfig:/usr/local/xorg/share/pkgconfig/'
# Disabled debugging for xserver
os.environ['CFLAGS'] = '-O2'
os.environ['CPPFLAGS'] = '-O2'
# Setup environment for cross compiling
os.environ['BUILD'] = 'i386-pc-linux'
os.environ['HOST'] = 'arm-linux'
os.environ['TARGET'] = 'arm-linux'
cross_compile_prefix = os.environ['CROSS_COMPILE']
tools = {'ADDR2LINE': 'addr2line',
'AS': 'as', 'CC': 'gcc', 'CPP': 'cpp',
'CPPFILT': 'c++filt', 'CXX': 'g++',
'GCOV': 'gcov', 'LD': 'ld', 'NM': 'nm',
'OBJCOPY': 'objcopy', 'OBJDUMP': 'objdump',
'READELF': 'readelf', 'SIZE': 'size',
'STRINGS': 'strings', 'AR': 'ar',
'RANLIB': 'ranlib', 'STRIP': 'strip'}
tools_args = str()
for tool in tools.keys():
fullpath_tool = cross_compile_prefix + tools[tool]
os.environ[tool] = fullpath_tool
autogenargs += ' --build='+os.environ['BUILD']
autogenargs += ' --host='+os.environ['HOST']
autogenargs += ' --target='+os.environ['TARGET']
for tool in ('AR', 'RANLIB', 'STRIP', 'AS', 'OBJDUMP', 'NM'):
autogenargs += ' '+tool+'="'+os.environ[tool]+'" '
module_autogenargs['libGL'] = autogenargs + ' --without-demos --enable-xcb --disable-glw --disable-glu --disable-egl --disable-gallium'
module_autogenargs['libXt'] = autogenargs + ' --disable-install-makestrs'
module_autogenargs['xserver'] = autogenargs + ' --disable-glx --disable-unit-tests --enable-dri2 CFLAGS="-O2 -I/usr/local/xorg/include -L/usr/local/xorg/lib -lfontenc -lxcb -lXau -lXext -lSM -lICE -lX11 -lXi"'
module_autogenargs['pixman'] = autogenargs + ' --disable-gtk --disable-static-testprogs '
module_autogenargs['hal'] = autogenargs + ' --disable-pci-ids'
module_autogenargs['libXfont'] = autogenargs + ' --disable-freetype'
module_autogenargs['libxslt'] = autogenargs + '--without-python --without-crypto --with-libxml-prefix=' + prefix
module_autogenargs['libxml2'] = autogenargs + '--without-python'
module_autogenargs['xkbutils'] = autogenargs + ' CFLAGS="-O2 -I/usr/local/xorg/include -L/usr/local/xorg/lib -lXaw7 -lXt -lX11 -lXext -lXmu -lXpm -lSM -lxcb -lICE -lXau"'
# For expat and zlib
os.environ['CFLAGS'] += ' -I' + os.environ['DISCIMAGE']
os.environ['CPPFLAGS'] += ' -IHello -I' + os.environ['DISCIMAGE']
os.environ['LDFLAGS'] = ' -L' + os.environ['DISCIMAGE']
os.environ['LDFLAGS'] += ' -Wl,--rpath -Wl,' + '/' #rpath is relative to where it is run from - DISCIMAGE
# Just in case zlib or expat were installed here
os.environ['CFLAGS'] += ' -I' + os.environ['DISCIMAGE']
os.environ['CPPFLAGS'] += ' -I' + os.environ['DISCIMAGE']
os.environ['LDFLAGS'] += ' -L' + os.environ['DISCIMAGE']
os.environ['LDFLAGS'] += ' -Wl,--rpath -Wl,' + '/'
xorg-7.6.modules
jhbuild -f jhbuildrc-7.6 build xserver
在编译过程中可能需要手动解决的依赖关系:
libxbc
└── xslt https://git.gnome.org/browse/libxslt/snapshot/libxslt-1.1.28.tar.gz
└── libxml2 https://git.gnome.org/browse/libxml2/snapshot/libxml2-2.9.1.tar.gz
libGL
└── MesaLib ftp://ftp.freedesktop.org/pub/mesa/older-versions/7.x/7.9/
├── talloc http://www.samba.org/ftp/talloc/talloc-1.3.0.tar.gz
└── makedepend 重用gcc译成,替换掉arm版
jhbuild -f jhbuildrc-7.6 build xf86-video-fbdev xf86-input-mouse xf86-input-void xf86-input-keyboard
# 键盘的其他组件
jhbuild -f jhbuildrc-7.6 buildone xkbutils xkbcomp xkeyboard-config
jhbuild -f jhbuildrc-7.6 buildone xinit
在编译过程中可能需要手动解决的依赖关系:
xinit
├── xauth
├── mcookie ftp://ftp.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz
├── xterm
│ └── ncurses
├── xclock
│ ├── libXft
│ │ ├── freetype
│ │ └── fontconfig
│ └── libbz2
└── twm
AR=${CROSS_COMPILE}ar CC=${CROSS_COMPILE}gcc RANLIB=${CROSS_COMPILE}ranlib LDFLAGS="-L$DISCIMAGE/lib" CPPFLAGS="-I$DISCIMAGE/include" ./autogen.sh --prefix=$DISCIMAGE --host=${CROSS_COMPILE%-}
./configure --prefix=$DISCIMAGE --host=${CROSS_COMPILE%-} --disable-static
-lXaw7 -lXt -lX11 -lXext -lXmu -lXpm -lSM -lxcb -lICE -lXau
-lfontconfig -lexpat -lfreetype -lpng16 -lz
错误信息:
_XSERVTransSocketOpenCOTSServer: Unable to open socket for inet6
_XSERVTransOpen: transport open failed for inet6/urbetter:0
_XSERVTransMakeAllCOTSServerListeners: failed to open listener for inet6
编辑startx:
serverargs="-nolisten tcp"
mountnfs 192.168.1.2:/home/allan/Workspace/arm-X11/discimage /mnt/nfs