linux GUI-directfb+gtk

說明:我參考的是這篇文章
http://www.directfb.com.cn/viewthread.p ... r%3Ddigest

我用到的軟件包如下:
tslib1.4, glib-2.12.13, atk-1.20.0, jpegsrc.v6b, zlib-1.2.3
libpng-1.2.24, expat-2.0.1, freetype-2.3.5, libxml2-2.6.30, fontconfig-2.5.0
tiff-3.7.4, DirectFB-1.1.1, cairo-1.4.12, pango-1.16.4, gtk+-2.10.14

所有的軟件包我都傳到納米盤那了啊,需要的去那下,地址如下:
http://d.namipan.com/d/62febd6b5963fb3c ... 5cc3fd5502

我使用的環境如下:
操作系統:ubuntu8.10
編譯器:arm-linux-gcc3.4.1

首先我按照那篇文章一步步的進行操作的確是成功編譯了directfb+gtk,然後我就想自己寫一個腳本來把那些操作貫穿起來,方便後來人用到編譯,可是我在編譯到第14個軟件包pango的時候卻失敗了,前13個軟件包都成功編譯了的,有興趣的來完善這個腳本,我現在就把那個腳本貼出來

對了,還有我雖然成功交叉編譯出來了,但是由於我現在沒有LCD屏,所以也沒把程序在板子上跑起來過,有LCD屏的朋友可以試下看看,別忘了分享你的成果哦,成功編譯出來的朋友如果想移植到板子上跑,那篇文章有說到,我在這就不貼出來了,因爲我也沒試過,後面我會把參考的那篇文章的pdf文件傳上來

先準備下環境吧:
xhy@xhy-desktop:~$mkdir gtk-work
xhy@xhy-desktop:~$cd gtk-work
xhy@xhy-desktop:~$mkdir source
xhy@xhy-desktop:~$mkdir script
xhy@xhy-desktop:~$mkdir work

把那15個軟件包放到source目錄下,把我寫的腳本放到script目錄下,讓腳本具有可執行權限
xhy@xhy-desktop:~$cd script
xhy@xhy-desktop:~$chmod 755 build-gtkdfb.sh

切換到root用戶,不要用sudo,執行腳本
xhy@xhy-desktop:~#cd /home/xhy/gtk-work/work
xhy@xhy-desktop:~#../script/build-gtkdfb.sh

腳本里的目錄需要更改啊,我放的軟件目錄是在/home/xhy/gtk-work/source
你要改爲你自己的

腳本代碼如下:
代碼:
#!/bin/sh

# tslib1.4, glib-2.12.13, atk-1.20.0, jpegsrc.v6b, zlib-1.2.3
# libpng-1.2.24, expat-2.0.1, freetype-2.3.5, libxml2-2.6.30, fontconfig-2.5.0
# tiff-3.7.4, DirectFB-1.1.1, cairo-1.4.12, pango-1.16.4, gtk+-2.10.14

export SOURCE_PATH=/home/xhy/gtk-work/source
export PREFIX=/opt/gtkdfb
export LDFLAGS=-L$PREFIX/lib
export CFLAGS="-g -I$PREFIX/include"
export PKG_CONFIG_PATH=${INSTALL_PATH}/lib/pkgconfig
export CC=arm-linux-gcc

BUILDDIR=`pwd`

# 1.交叉編譯tslib, 依賴的庫: 無

echo "=========開始交叉編譯tslib========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/tslib-1.4.tar.gz
cd tslib
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
./configure --host=arm-linux --prefix=$PREFIX --cache-file=arm-linux.cache --enable-inputapi=no
make
make install


# 2.交叉編譯glib, 依賴的庫: 無

echo "=========開始交叉編譯glib========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/glib-2.12.13.tar.bz2
cd glib-2.12.13
echo "ac_cv_type_long_long=yes" > arm-linux.cache
echo "glib_cv_stack_grows=no" >> arm-linux.cache
echo "glib_cv_uscore=no" >> arm-linux.cache
echo "ac_cv_func_posix_getpwuid_r=yes" >> arm-linux.cache
./configure --host=arm-linux --build=i686-pc-linux --prefix=$PREFIX --cache-file=arm-linux.cache
make
make install


# 3.交叉編譯atk, 依賴的庫: glib

echo "=========開始交叉編譯atk========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/atk-1.20.0.tar.bz2
cd atk-1.20.0
./configure --host=arm-linux --prefix=$PREFIX
make
make install


# 4.交叉編譯jpeg, 依賴的庫: 無

echo "=========開始交叉編譯jpeg========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=$PREFIX --enable-shared --enable-static
mkdir $PREFIX/man
mkdir $PREFIX/man/man1

sed -i -e 's/CC= gcc/CC= arm-linux-gcc/g' Makefile
sed -i -e 's/AR= ar rc/AR= arm-linux-ar rc/g' Makefile
sed -i -e 's/AR2= ranlib/AR2= arm-linux-ranlib/g' Makefile

make
make install


# 5.交叉編譯zlib, 依賴的庫: 無

echo "=========開始交叉編譯zlib========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/zlib-1.2.3.tar.bz2
cd zlib-1.2.3

sed -i -e 's/CC= gcc/CC= arm-linux-gcc/g' configure

./configure --prefix=$PREFIX --shared
make
make install


# 6.交叉編譯libpng, 依賴的庫: 無

echo "=========開始交叉編譯libpng========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/libpng-1.2.24.tar.tar
cd libpng-1.2.24
./configure --host=arm-linux --prefix=$PREFIX
make
make install


# 7.交叉編譯expat, 依賴的庫: 無

echo "=========開始交叉編譯expat========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/expat-2.0.1.tar.gz
cd expat-2.0.1
./configure --host=arm-linux --prefix=$PREFIX
make
make install


# 8.交叉編譯freetype, 依賴的庫: 無

echo "=========開始交叉編譯freetype========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/freetype-2.3.5.tar.tar
cd freetype-2.3.5
./configure --host=arm-linux --prefix=$PREFIX
make
make install


# 9.交叉編譯libxml, 依賴的庫: 無

echo "=========開始交叉編譯libxml========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/libxml2-2.6.30.tar.gz
cd libxml2-2.6.30
./configure --host=arm-linux --prefix=$PREFIX
make
make install


# 10.交叉編譯fontconfig, 依賴的庫: freetype, libxml2

echo "=========開始交叉編譯fontconfig========="

cd ${BUILDDIR}
export LIBXML2_CFLAGS=-I$PREFIX/include/libxml2
export LIBXML2_LIBS="-L$PREFIX/lib -lxml2"
tar xzf ${SOURCE_PATH}/fontconfig-2.5.0.tar.gz
cd fontconfig-2.5.0
./configure --host=arm-linux --prefix=$PREFIX --with-freetype-config=$PREFIX/bin/freetype-config --with-arch=arm
make
make install


# 11.交叉編譯tiff, 依賴的庫: jpeg, zlib

echo "=========開始交叉編譯tiff========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/tiff-3.7.4.tar.gz
cd tiff-3.7.4
./configure --host=arm-linux --prefix=$PREFIX --enable-shared
make
make install


# 12.交叉編譯DirectFB, 依賴的庫: 無

echo "=========開始交叉編譯DirectFB========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/DirectFB-1.1.1.tar.gz
cd DirectFB-1.1.1
./configure --host=arm-linux --prefix=$PREFIX --with-gfxdrivers=none --with-inputdrivers=all --enable-png --enable-jpeg --disable-tiff --enable-zlib --enable-sdl=no --enable-gif=no --disable-x11
make
make install


# 13.交叉編譯cairo, 依賴的庫: freetype,zlib

echo "=========開始交叉編譯cairo========="

cd ${BUILDDIR}
tar xzf ${SOURCE_PATH}/cairo-1.4.12.tar.gz
cd cairo-1.4.12
./configure --host=arm-linux --prefix=$PREFIX --without-x --disable-xlib --disable-xlib-xrender --enable-directfb --enable-freetype --disable-win32 --enable-pdf --enable-ps --disable-svg --enable-png
make
make install


# 14.交叉編譯pango, 依賴的庫: glib, freetype, xml

echo "=========開始交叉編譯pango========="

cd ${BUILDDIR}
tar xjf ${SOURCE_PATH}/pango-1.16.4.tar.bz2
cd pango-1.16.4

sed -i -e 's/have_cairo=false/have_cairo=true/g' configure
sed -i -e 's/have_cairo_png=false/have_cairo_png=true/g' configure
sed -i -e 's/have_cairo_ps=false/have_cairo_ps=true/g' configure
sed -i -e 's/have_cairo_pdf=false/have_cairo_pdf=true/g' configure
sed -i -e 's/have_cairo_freetype=false/have_cairo_freetype=true/g' configure

./configure --host=arm-linux --prefix=$PREFIX --enable-cairo --without-x
make
make install


# 15.交叉編譯gtk, 依賴的庫: glib, pango, atk, cairo, DirectFB

echo "=========開始交叉編譯gtk========="

cd ${BUILDDIR}
export LDFLAGS="-L$PREFIX/lib -Wl,-rpath,$PREFIX/lib"
export CPPFLAGS="-I$PREFIX/include"
tar xjf ${SOURCE_PATH}/gtk+-2.10.14.tar.bz2
cd gtk+-2.10.14
./configure --host=arm-linux --prefix=$PREFIX --with-gdktarget=directfb --without-x --without-libtiff
make
make install

echo "=========交叉編譯全部結束========="
http://forum.ubuntu.org.cn/viewtopic.php?t=223648

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章