2008年11月7日 星期五

第六章 gtk 在arm版的測試

步驟一:
將Cross好的library放入arm版內,我的作法是將放在/mnt/sd/arm_lib_4.2.1的資料放在記憶卡上,在開機的時候讓它自動將記憶卡 mount在/mnt/sd/的這個位置。(這就是為什麼我作好的library要放在本機上mnt/sd中/為的就是要搭配arm版上的使用環境,這樣可以避免很多不必要的麻煩跟設定,當然應該還有更好的方法,只是我目前沒有想到!!)

步驟二:
在本機的/mnt/sd/會有一個fonts的目錄請將他cp到記憶卡上,在來將本機/usr/share/fonts/X11整個目錄 cp到記憶卡中fonts/的目錄中。


步驟三:
當然就是將記憶上放到arm版上~開機啦!!並將記憶卡mount起來!!

步驟四:
確認Xserver是否能啟動(其實這裡在作到Xserver時就因該要自覺先試試看否能在arm版上run成功,在繼續作下去,不然一切都是白搭。

測試方式很簡單:

在arm_4.2.1里面有一個bin的目錄,有一個Xfbdev的執行檔,執行他就好了

成功的話會出現xserver的畫面,並且可以使用mouse。

失敗的話可能就是那裡有作錯了,或是設定上有問題。


因為測試版上的arm的內存有限很難將所有的library用到arm版上,為了方便跟省時,我的作法是在開機的時候作一個自動執行的shell 在開機的時候將arm版根目錄中會有一個lib目錄將他砍了,然後自動mount 記憶卡,在下一個ln -s的指令,將arm版目錄中 /mnt/sd/arm_lib_4.2.1/lib 作個軟連接到你的根目錄 去取代那一個被你砍掉的lib目錄,但是呢!在這之前你必須要將原本lib目錄中的資料,先cp到arm_lib_4.2.1/lib的目錄中,不然會有問題,因為會有一些arm版自身要用的library會找不到導致無法執行任何程式。


步驟五:
在你確定Xserver就可繼續以後的設定!!

在arm版上/mnt/sd/arm_lib_4.2.1/bin

請執行 fc-cache -f -v 這一個是要將字型的cache載入

請執行 fc-list 確定字型是否有成功載入

cache的存放會在/mnt/sd/fonts/var/cache/fontconfig

在做 fc-cache -f -v 的時候會有出現寫不進cache的錯誤 發現因該是fonts目錄權限上有問題可是很奇怪,用chmod -R 775 or 777改了~還是照錯(不知道別人的版子是否一樣),試到最後解決的方法真的很瞎!! 但也很有用就是在arm版中將fonts 改成 fonts2 再cp -R font2 fotns 這樣就可以解決那一個cache寫不進去的問題!!(不要問我為什麼!!我也不知道)



步驟六:

1.確認/arm_lib_4.2.1/lib/xserver/SecurityPolicy 是否有這個一個檔案。

2.確認/arm_lib_4.2.1/etc/gtk-2.0/gdk-pixbuf.loaders 是否有這一個檔案。

這一個檔案必須由 /mnt/arm_lib_4.2.1/bin/gdk-pixbuf-query-loaders > gdk-pixbuf.loaders 來產生,之後再cp過去就好了。

3.確認/arm_lib_4.2.1/etc/pango/pango.modules 是否有這一個檔案。

這一個檔案必須由/mnt/sd/arm_lib_4.2.1/bin/pango-querymodules > pango.modules 來產生,之後在cp過去就好了。

它會將pango+modules的資料載入 /mnt/sd/arm_lib_4.2.1/lib/pango/1.6.0/modules所以必須確定modules裡面要有資料。

步驟七:
當你完成上面的設定後接下來就簡單啦~~

執行/mnt/sd/arm_lib_4.2.1/bin

1. Xfbdeb & "背景執行"

2. gtk-demo 出現錯誤 (gtk-demo:608): Gtk-WARNING **: cannot open display:

3. export DISPLAY=:0.0

4.gtk-deom 這樣就成功啦!!字型也正常顯示!!





Xserver 成功



gtk-demo成功

2008年11月5日 星期三

第五章 GTK移植

*******************************************************************************************
51.fixesproto-4.0

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************
52.xineramaproto-1.1.2

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$ make install
*******************************************************************************************
53.libXinerama-1.0.2

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-malloc0returnsnull

$ make all
$ make install
*******************************************************************************************
54.libXfixes-4.0.3

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

$ make all
$ make install
*******************************************************************************************
55.libgpg-error-1.0

patch -Np1 -i pkgconfig.patch

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes
$ make all
$ make install
*******************************************************************************************
56.libgcrypt-1.2.3

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --with-gpg-error-prefix=$PREFIX
$ make all
$ make install

ps. 這個選項很多不知道什麼要開 有空好好研究
*******************************************************************************************
57.libXcomposite-0.4.0

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

patch -Np1 -i change-include-order.patch

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes
$ make all
$ make install
*******************************************************************************************
58.atk-1.20.0

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

$ CC=arm-softfloat-linux-gnu-gcc ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX --disable-glibtest --enable-static=yes --enable-shared=yes --disable-glibtest

$ make all
$ make install
*******************************************************************************************
59.libXcursor-X11R7.2-1.1.8

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

$ CC=arm-softfloat-linux-gnu-gcc ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX --disable-glibtest --enable-static=yes --enable-shared=yes

$ make all
$ make install
*******************************************************************************************
60.libXdamage-1.1.1

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes
$ make all
$ make install
*******************************************************************************************
61.gtk+-2.12.7

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux

patch -Np1 -i xsettings.patch
patch -Np1 -i run-iconcache.patch
patch -Np1 -i disable-print.patch
patch -Np1 -i hardcoded_libtool.patch
patch -Np1 -i no-demos.patch
patch -Np1 -i filesystem-volumes.patch
patch -Np1 -i filechooser-props.patch
patch -Np1 -i filechooser-default.patch
patch -Np1 -i filechooser-sizefix.patch

cp 到gtk的目錄下可以打成功
patch -Np1 -i cellrenderer-cairo.patch
patch -Np1 -i entry-cairo.patch
patch -Np1 -i toggle-font.diff

cp到gdk/x11的目錄下
patch -Np1 -i scrolled-placement.patch cp到gdk/x11的目錄下




$ CC=arm-softfloat-linux-gnu-gcc ac_cv_lib_jpeg_jpeg_destroy_decompress=yes ac_cv_func_XOpenDisplay=yes ac_cv_func_XextFindDisplay=yes ac_cv_lib_jpeg_jpeg_simple_progression=yes ac_cv_func_XRenderQueryExtension=yes ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --without-libtiff --disable-xkb --disable-glibtest --with-gdktarget=x11 --with-xinput=yes --enable-display-migration

再加一個
ac_cv_func_XOpenDisplay=yes
避免
configure: error: *** libX11 not found.
再加一個
ac_cv_func_XextFindDisplay=yes
configure: error: *** libXext not found.
再加一個
ac_cv_func_XRenderQueryExtension=yes
configure: error: *** libXrender not found.

checking Pango flags... -DPNG_NO_MMX_CODE -I/arm_lib_4.2.1/include/pango-1.0 -I/arm_lib_4.2.1/include/glib-2.0 -I/arm_lib_4.2.1/lib/glib-2.0/include -I/arm_lib_4.2.1/include/cairo -I/arm_lib_4.2.1/include/freetype2 -I/arm_lib_4.2.1/include -I/arm_lib_4.2.1/include/libpng12 -L/arm_lib_4.2.1/lib -lpangocairo-1.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0
configure: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org

modified configure
{ { echo "$as_me:$LINENO: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org" >&5
echo "$as_me: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org" >&2;}
{ (exit 1); exit 1; }; }
fi

exit 拿掉

-fsigned-char
IA__gdk_keyval_convert_case

../../gdk/gdkaliasdef.c:1748: error: 'gdk_keyval_convert_case' aliased to undefined symbol 'IA__gdk_keyval_convert_case'
make[2]: *** [gdkkeys-x11.lo] Error 1
make[2]: Leaving directory `/home/clouds/work_2/gtk+-2.12.7/gdk/x11'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/clouds/work_2/gtk+-2.12.7/gdk'
make: *** [all] Error 2

會有二個機車的error

修改config.h
#define HAVE_XCONVERTCASE 1
/* #undef HAVE_XCONVERTCASE */

#define HAVE_SHAPE_EXT 1
/* #undef HAVE_SHAPE_EXT */

第四章 Cairo與Pango移植

*******************************************************************************************
41.expat-2.0.0

CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR=arm-softfloat-linux-gnu-ar ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX

make all
make instal
*******************************************************************************************
42.fontconfig-2.4.2

$ CC=arm-softfloat-linux-gnu-gcc CFLAGS="-I/mnt/sd/arm_lib_4.2.1/include -I/mnt/sd/arm_lib_4.2.1/include/freetype2/freetype -I/mnt/sd/arm_lib_4.2.1/include/freetype2/freetype/config" LDFLAGS="-L/mnt/sd/arm_lib_4.2.1/lib" ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=aarmv5te --enable-static=yes --enable-shared=yes --with-default-fonts=/mnt/sd/fonts --with-cache-dir=/mnt/sd/fonts/var/cache/fontconfig --with-confdir=/mnt/sd/fonts

$ make all
$ make install

--with-confdir=/mnt/sd/fonts 設定尋找字型的目錄

ps. Makefile中這幾行有點礙眼
FC_ADD_FONTS = /usr/X11R6/lib/X11/fonts
FC_CACHEDIR = /home/clouds/project/var/cache/fontconfig
FC_DEFAULT_FONTS = /usr/share/fonts
FC_FONTDATE = Mon Mar 10 17:36:16 CST 2008
FC_FONTPATH = /usr/X11R6/lib/X11/fonts
若以後找沒字型可能要改這裡

***
*** Warning: fonts.cache not built
***
*** Generate this file manually on host system using fc-cache
***
FC_CACHEDIR = /mnt/sd/fonts/var/cache/fontconfig
FC_DEFAULT_FONTS = /mnt/sd/fonts
*******************************************************************************************
43.jpeg-6b, http://www.ijg.org/files/jpegsrc.v6b.tar.gz

打 patch < ldflags.patch
patch -Np1 -i ldflags.patch

./ltconfig --disable-static --no-verify ltmain.sh arm-softfloat-linux-gnu

$CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR=arm-softfloat-linux-gnu-ar ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes
修改Makefile

CFLAGS= -O2 -I$(srcdir) -D_REENTRANT

$ make all
$ make install
$ make install-lib
$ make install-headers
*******************************************************************************************
44.libpng-1.2.16

$CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR=arm-softfloat-linux-gnu-ar ac_cv_lib_z_zlibVersion=yes ./configure --host=$HOST --build=$BUILD --prefix=$PREFIX --enable-shared=yes --enable-static=yes

edit Makefile
DEFAULT_INCLUDES = -I. -I$(srcdir) -I. -I$(PREFIX)/include
LIBS = -L$(PREFIX)/lib -lz -lm

$make all
$make install
*******************************************************************************************
45.libICE-1.0.3(為製作libsm所需)

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

$ make all

有一堆這種警告
warning: function declaration isn't a prototype
先裝死吧

$ make install
*******************************************************************************************
46.libSM-1.0.3

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

$ make all

有一堆這種警告
warning: function declaration isn't a prototype
先裝死吧

$ make install
*******************************************************************************************
47. cairo-1.4.14
edit configure 加以下3行
ac_cv_lib_z_compress=yes
ac_header_compiler=yes
ac_header_preproc=yes
ELF file OS ABI invalid

找 24099 行 unset cairo_cv_backend_xcb_use 下面加
cairo_cv_backend_xcb_use=yes
找 27869 行 unset cairo_cv_backend_pdf_use 下面加
cairo_cv_backend_pdf_use=yes

第一次用的~
$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-xcb=no --enable-win32=no --enable-win32-font=no --enable-gtk-doc=yes --enable-pdf=yes --enable-static=yes --enable-shared=yes --disable-some-floating-point

最近用的~
$ ac_cv_header_zlib_h=yes CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --disable-some-floating-point

ps. svg是好物 以後有空研究enable

$ make all
一堆warning: missing initializer 裝死

$ make install


cairo will be compiled with the following surface backends:
image: yes (always builtin)
Xlib: yes
Xlib Xrender: yes
Quartz: no (disabled, use --enable-quartz to enable)
XCB: no (disabled, use --enable-xcb to enable)
Win32: no (disabled, use --enable-win32 to enable)
OS2: no (disabled, use --enable-os2 to enable)
PostScript: no (requires zlib http://www.gzip.org/zlib/)
PDF: yes
SVG: yes
glitz: no (disabled, use --enable-glitz to enable)
BeOS: no (disabled, use --enable-beos to enable)
DirectFB: no (disabled, use --enable-directfb to enable)

the following font backends:
FreeType: yes
Win32: no (disabled, use --enable-win32-font to enable)
ATSUI: no (disabled, use --enable-atsui to enable)

the following features:
PNG functions: yes

and the following debug options:
gcov support: no
test surfaces: no
pdf testing: no (requires poppler-glib >= 0.4.1)
svg testing: yes

using CFLAGS:
-I/arm_lib_4.2.1/include/freetype2 -I/arm_lib_4.2.1/include -I/arm_lib_4.2.1/include -DPNG_NO_MMX_CODE -I/arm_lib_4.2.1/include/libpng12 -I/arm_lib_4.2.1/include -I/arm_lib_4.2.1/include -Wall -Wextra -Wsign-compare -Werror-implicit-function-declaration -Wpointer-arith -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wpacked -Wswitch-enum -Wmissing-format-attribute -Wstrict-aliasing=2 -Winit-self -Wunsafe-loop-optimizations -Wdeclaration-after-statement -Wold-style-definition -Wno-missing-field-initializers -Wno-unused-parameter -Wno-attributes -fno-strict-aliasing
*******************************************************************************************
48.libXft-2.1.12

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

$ make all
$ make install
*******************************************************************************************
49.glib-2.14.6
若Cross過程中有出現這一個錯誤訊息 "ELF file OS ABI invalid" 要將環境變數改成以這四行

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux


Cross環境設定
$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export LD_LIBRARY_PATH=$PREFIX/lib
$export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux


glib-2.14.6
$CC=arm-softfloat-linux-gnu-gcc ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX --enable-shared=yes --enable-static=yes


這一個不加 --enable-included-printf=no


出現了如下錯誤:
  checking for growing stack pointer... configure: error: cannot run test program while cross compiling
  原來configure不能為交叉編譯檢查glib_cv_stack_grows,glib_cv_stack_grows表示堆棧的增長方向。 configure無法在目標機上運行測試程序,自然無法檢查,只好手工指定。順便看一下還哪些相關的變量不能檢查的,一起寫到cache文件中,並重新配置:

  clouds@ubu-lin:~/work/glib-2.12.13$ echo ac_cv_type_long_long=yes>> 1.cache
  clouds@ubu-lin:~/work/glib-2.12.13$ echo glib_cv_stack_grows=no>>1.cache
  clouds@ubu-lin:~/work/glib-2.12.13$ echo glib_cv_uscore=no>>1.cache
  clouds@ubu-lin:~/work/glib-2.12.13$ echo ac_cv_func_posix_getpwuid_r=no>>1.cache
  

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --cache-file=1.cache
這回配置成功了,編譯

$make
$make install


在測試arm版gtk-demo時會出現以下錯誤
(gtk-demo:712): GLib-WARNING **: getpwuid_r(): failed due to unknown user id (0)

(gtk-demo:712): Gtk-WARNING **: cannot open display:

將echo ac_cv_func_posix_getpwuid_r=yes>>1.cache 改為 echo ac_cv_func_posix_getpwuid_r=no>>1.cache 再編一次

*******************************************************************************************
50.pango-1.18.3

patch -Np1 -i no-tests.patch
patch -Np1 -i configure_fixes.patch

modified configure
have_cairo=true
have_cairo_png=true
have_cairo_ps=true
have_cairo_pdf=true
have_cairo_xlib=true
have_cairo_freetype=true
have_cairo_win32=false
have_cairo_atsui=false


ac_cv_lib_cairo_cairo_surface_write_to_png=yes ac_cv_lib_cairo_cairo_ps_surface_create=yes ac_cv_lib_cairo_cairo_pdf_surface_create=yes ac_cv_lib_cairo_cairo_xlib_surface_create=yes ac_cv_lib_cairo_cairo_ft_scaled_font_lock_face=yes CC=arm-softfloat-linux-gnu-gcc CAIRO_CFLAGS='-I/mnt/sd/arm_lib_4.2.1/include -I/mnt/sd/arm_lib_4.2.1/include/cairo' CAIRO_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lcairo' GLIB_CFLAGS='-I/mnt/sd/arm_lib_4.2.1/include -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0 -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0/glib -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0/gobject -I/mnt/sd/arm_lib_4.2.1/lib/glib-2.0/include' GLIB_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lglib-2.0 -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0' ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-explicit-deps=no --disable-glibtest --disable-debug

configure 結束後一行的結果:
configuration:
backends: FreeType X Xft Cairo



錯誤
checking pkg-config is at least version 0.9.0... /usr/bin/pkg-config: error while loading shared libraries: /arm_lib_4.2.1/lib/libglib-2.0.so.0: ELF file OS ABI invalid
no

解決
這一個不要打 export LD_LIBRARY_PATH=

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux


CAIRO_CFLAGS='-I/mnt/sd/arm_lib_4.2.1/include -I/arm_lib_4.2.1/include/cairo'

CAIRO_LIBS='-L/mnt/sdarm_lib_4.2.1/lib -lcairo'

GLIB_CFLAGS='-I/mnt/sd/arm_lib_4.2.1/include -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0 -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0/glib -I/mnt/sd/arm_lib_4.2.1/include/glib-2.0/gobject -I/mnt/sd/arm_lib_4.2.1/lib/glib-2.0/include'

GLIB_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lglib-2.0 -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0'

*******************************************************************************************

2008年11月4日 星期二

第三章 libXi 移植



*************************************************************************************************
39.libXext-1.0.3

相依 Xproto Xextproto
$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$ make all
$ make install

--enable-malloc0returnsnull 加了這一個選項就不用去改configure
edit configure to find "cannot run test program while cross compiling"
modify { (exit 1); exit 1; }; } to }
*************************************************************************************************
40.libXi-1.1.2

相依 libxext inputproto
$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$ make all
$ make install

--enable-malloc0returnsnull 加了這一個選項就不用去改configure這一個不要打 export LD_LIBRARY_PATH=
edit configure to find "cannot run test program while cross compiling"
modify { (exit 1); exit 1; }; } to }
*************************************************************************************************

第二章 Xserver (Kdrive)移植



*************************************************************************************************
13.zlib-1.2.3

patch -Np1 -i visibility.patch

$CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR="arm-softfloat-linux-gnu-ar rc" ./configure --prefix=$PREFIX --shared
$make all
$make install
*************************************************************************************************
14.tslib-1.0

主機端安裝autoconf (automatic configure script builder)
主機端安裝automake

patch -Np1 -i fix_version.patch

./autogen.sh

修改./etc/ts.conf 設成linux內部module_raw input

$ CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR=arm-softfloat-linux-gnu-ar ac_cv_func_malloc_0_nonnull=yes ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-ucb1x00=no --enable-corgi=no --enable-collie=no --enable-h3600=no --enable-mk712=no --enable-arctic2=no --enable-input

$ make all
$ make install

*************************************************************************************************
15.freetype-2.3.5 (做時會出現一個錯誤訊息~在configure完後打echo $? 出現0 則ok error mesage :make: Nothing to be done for `unix'.)
註:echo $? 檢查configure 作完的傳回值 0 則作完 1則是退出

打兩個補丁patch -Np1 -i fix-x86_64-build.patch
patch -Np1 -i no-hardcode.patch

$ CC=arm-softfloat-linux-gnu-gcc NM=arm-softfloat-linux-gnu-nm AR=arm-softfloat-linux-gnu-ar ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --without-zlib

$ make all
$ make install
*************************************************************************************************
16.compositeproto-0.4

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
17.damageproto-1.1.0

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
18.fixesproto-4.0

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
19.recordproto-1.13.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
20.resourceproto-1.0.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
21.scrnsaverproto-1.1.0

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
22.xineramaproto-1.1.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
23.videoproto-2.2.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
24.calibrateproto

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
25.fontsproto-2.0.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
26.fontcacheproto-0.1.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
27.randrproto-1.2.1

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
28.renderproto-X11R7.0-0.9.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
29.xf86miscproto 0.9.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
30.xf86vidmodeproto 2.2.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
31.xf86dgaproto 2.0.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*************************************************************************************************
32.libxkbfile-1.0.4

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes
$ make all
$ make install
*************************************************************************************************
33.libXCalibrate

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes
$ make all
$ make install
*************************************************************************************************
34.libXrender-0.9.2

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$ make all
$ make install
*************************************************************************************************
35.libXrandr-1.2.1

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$ make all
$ make install
*************************************************************************************************
36.libfontenc-1.0.4

$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

edit ./src/Makefile
DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -I/mnt/sd/arm_lib_4.2.1/include

$ make all
$ make install
*************************************************************************************************
37.libXfont-1.3.1

edit configure
ac_cv_lib_z_gzopen=yes
(bypass zlib check)

$ CC=arm-softfloat-linux-gnu-gcc ac_cv_lib_z_gzopen=yes ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes

$ make all
$ make install
*************************************************************************************************
38.xorg-server-1.3.0.0

修改configure 尋找cannot check for file existence when cross compiling
把下面的 { (exit 1); exit 1; };} 改成}

$ CC=arm-softfloat-linux-gnu-gcc ac_cv_file__usr_share_X11_sgml_defs_ent=no ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-composite --enable-kdrive --disable-dga --disable-dri --disable-xinerama --disable-xf86misc --disable-xf86vidmode --disable-xorg --disable-xorgcfg --disable-xkb --disable-xnest --disable-xvfb --disable-xevie --disable-xprint --disable-xtrap --disable-dmx --with-default-font-path=built-ins --enable-tslib --enable-xcalibrate

再configure 一次

出現以下error
configure: error: tslib must be installed to build the tslib driver. See http://tslib.berlios.de/

在configure加入tslib路徑
TSLIB_CFLAGS=-I/mnt/sd/arm_lib_4.2.1/include TSLIB_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lts'

$ CC=arm-softfloat-linux-gnu-gcc ac_cv_file__usr_share_X11_sgml_defs_ent=no TSLIB_CFLAGS=-I/mnt/sd/arm_lib_4.2.1/include TSLIB_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lts' ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-composite --enable-kdrive --disable-dga --disable-dri --disable-xinerama --disable-xf86misc --disable-xf86vidmode --disable-xorg --disable-xorgcfg --disable-xkb --disable-xnest --disable-xvfb --disable-xevie --disable-xprint --disable-xtrap --disable-dmx --with-default-font-path=built-ins --enable-tslib --enable-xcalibrate


最後一次用的
CC=arm-softfloat-linux-gnu-gcc ac_cv_file__usr_share_X11_sgml_defs_ent=no TSLIB_CFLAGS=-I/mnt/sd/arm_lib_4.2.1/include TSLIB_LIBS='-L/mnt/sd/arm_lib_4.2.1/lib -lts' ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-shared=yes --enable-static=yes --enable-composite --enable-kdrive --disable-dga --disable-dri --disable-xinerama --disable-xf86misc --disable-xf86vidmode --disable-xorg --disable-xorgcfg --disable-xkb --disable-xnest --disable-xvfb --disable-xevie --disable-xprint --disable-xtrap --disable-dmx --enable-tslib --enable-xcalibrate --with-fontdir=/mnt/sd/fonts/X11


--with-default-font-path=built-ins
--with-fontdir=/mnt/sd/fonts/X11 設定尋找字型的目錄

這裡不要打patch可過

第一章 libX11 移植




*******************************************************************************************************************
部份原始碼下載網址:

http://xorg.freedesktop.org/releases/X11R7.3/src/

ftp://ftp.qtopia.org.cn/mirror/ftp.x.org/pub/

http://altruistic.lbl.gov/mirrors/gnome/platform/2.20/2.20.0/sources/

http://mirror.hentges.net/SonkeiSourceMirror/raw/git/anongit.freedesktop.org.git.xorg.proto.calibrateproto/master/git/
*******************************************************************************************************************
Patch下載:

至http://www.pokylinux.org/ 下載 pinky-3.1.1
在/pinky-3.1.1/meta/packages 各目錄中有所屬的patch可用(請自行參考服用)
svn co http://svn.o-hand.com/repos/poky/trunk poky
*******************************************************************************************************************
Cross 環境

作業系統: ubuntu 8.04
Cross_gcc版本:gcc4.2.1
測試版:arm926ej
*******************************************************************************************************************
Cross環境設定

$export PREFIX=/mnt/sd/arm_lib_4.2.1
$export LD_LIBRARY_PATH=$PREFIX/lib
$export PKG_CONFIG_PATH=$LD_LIBRARY_PATH/pkgconfig
$export HOST=arm-softfloat-linux-gnu
$export BUILD=i686-linux
*******************************************************************************************************************
1.inputproto-1.4.2.1

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************************************
2.kbproto-1.0.3

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************************************
4.xproto-7.0.10

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************************************
5.xextproto-7.0.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************************************
6.xcmiscproto-1.1.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make install
*******************************************************************************************************************
7.xf86bigfontproto-1.1.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$make instal
*******************************************************************************************************************
8.xtrans-X11R7.2-1.0.3

打 patch -Np1 -i fix-missing-includepath.patch
$ CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD
$ make install
*******************************************************************************************************************
9.libXau-1.0.3

相依 Xproto
$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$make all
*******************************************************************************************************************
10.libXdmcp-1.0.2

$CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull
$make all
$make install
*******************************************************************************************************************
11.util-macros-1.1.5

打 patch -Np1 -i unbreak_cross_compile.patch

$CC=arm-softfloat-linux-gnu-gcc ./configure --build=$BUILD --host=$HOST --prefix=$PREFIX
$make install
*******************************************************************************************************************
12.libX11-1.1.2

打 patch -Np1 -i include_fix.patch
patch -Np1 -i x11_disable_makekeys.patch

CC=arm-softfloat-linux-gnu-gcc ./configure --prefix=$PREFIX --host=$HOST --build=$BUILD --enable-static=yes --enable-shared=yes --enable-malloc0returnsnull --without-xcb --with-keysymdef=$PREFIX/include/X11/keysymdef.h



修改./src/Makefile 註解掉下面的東西(注意!! 這個是configure產生的, 除非妳改過, 不然每次configure都要改)

ks_tables.h: $(KEYSYMDEF) $(top_builddir)/src/util/makekeys$(EXEEXT)
1246 # $(top_builddir)/src/util/makekeys < $(KEYSYMDEF) > ks_tables_h
1247# mv ks_tables_h $@

把先前做好的ks_tables.h放在./src 下面(注意!! 如果下make clean預設會把他清掉, 需要再次確定)
作法, 不cross做一次然後拿這個出來cross或是cross作好makekeys 放進目標板中 執行makekeys <> ks_tables_h

$make all
$make install