现在的位置: 首页 > 操作系统 > 正文

一步步教你交叉编译嵌入式linux GUI-directfb+gtk

2019年07月19日 操作系统 ⁄ 共 5829字 ⁄ 字号 评论关闭

说明:我参考的是这篇文章
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 "=========交叉编译全部结束========="

【上篇】
【下篇】

抱歉!评论已关闭.