当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 15 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-08-28 20:11 
头像

注册: 2007-04-09 15:19
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
说明:我参考的是这篇文章
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 "=========交叉编译全部结束========="


附件:
linux+GUI--DirectFB+%2B+GTK至尊秘笈.pdf [643.06 KiB]
被下载 1695 次
页首
 用户资料  
 
2 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-08-29 23:39 
头像

注册: 2008-07-30 17:34
帖子: 87
送出感谢: 0 次
接收感谢: 0 次
好帖子要顶起来


页首
 用户资料  
 
3 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-08-29 23:42 
头像

注册: 2008-12-13 19:39
帖子: 13284
地址: 物华天宝人杰地灵
送出感谢: 1
接收感谢: 6
某家路过装模作样的学习下,看来余水平偏低,有待提高啊。顶楼主。 :em11


_________________
行到水穷处,坐看云起时。
海内生明月,天涯共此夕。
--------------------吾本独!


页首
 用户资料  
 
4 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-08-30 0:07 

注册: 2009-01-08 1:21
帖子: 126
送出感谢: 0 次
接收感谢: 0 次
mark


页首
 用户资料  
 
5 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-08-30 11:26 
头像

注册: 2007-10-18 17:37
帖子: 167
地址: 深圳
送出感谢: 0 次
接收感谢: 0 次
回头慢慢看。


页首
 用户资料  
 
6 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-09-05 19:21 

注册: 2008-09-06 19:24
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
前面的包都编译通过了, 在最后一步编译gtk时, 运行configure 出现:
configure: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org

我检查了 PKG_CONFIG_PATH 等环境变量, 都是正确的, 在 lib/pkgconfig 目录下也存在 pango.pc 文件, lib 下也有 libpango-1.0.so

为什么会连接出错呢? 有人给指导一下吗?


页首
 用户资料  
 
7 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-09-05 20:36 
头像

注册: 2007-04-09 15:19
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
hongwang 写道:
前面的包都编译通过了, 在最后一步编译gtk时, 运行configure 出现:
configure: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org

我检查了 PKG_CONFIG_PATH 等环境变量, 都是正确的, 在 lib/pkgconfig 目录下也存在 pango.pc 文件, lib 下也有 libpango-1.0.so

为什么会连接出错呢? 有人给指导一下吗?


你是用脚本编译的还是手动一个个编的?我的如果是手动打开一些文件进行修改,不用命令修改,然后一个个手动编是可以成功编译成功的,但是我写成脚本用命令进行全部操作就是编不过去的,真奇怪


页首
 用户资料  
 
8 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2009-09-20 14:39 

注册: 2007-05-19 16:59
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
支持,谢谢 :em11 :em11 :em11 :em11


页首
 用户资料  
 
9 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2010-01-07 17:13 

注册: 2009-12-03 22:21
帖子: 9
送出感谢: 0 次
接收感谢: 0 次
看你的步骤应该没有编译成功过(我瞎猜的不要介意---估计你也是从别的帖子拷贝过来的)。
我在ubuntu9 下编译还是遇到不少问题, 整个编译花费了我2周多时间,现在已经移植到TQ2440板子上了,桌面字库显示都没问题,虽然也编译TSLIB,但是触摸屏还是不起作用,我怀疑是我用的directfb版本太低(采用版本是0.9.25),现在把1.4.0编译了(花了2天时间),等我全部移植并正常运行后,再把编译步骤和必要的修改贴上来供大家参考。


页首
 用户资料  
 
10 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2010-01-20 16:19 

注册: 2010-01-20 16:15
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
xhylyx 写道:
hongwang 写道:
前面的包都编译通过了, 在最后一步编译gtk时, 运行configure 出现:
configure: error:
*** Can't link to Pango. Pango is required to build
*** GTK+. For more information see http://www.pango.org

我检查了 PKG_CONFIG_PATH 等环境变量, 都是正确的, 在 lib/pkgconfig 目录下也存在 pango.pc 文件, lib 下也有 libpango-1.0.so

为什么会连接出错呢? 有人给指导一下吗?


你是用脚本编译的还是手动一个个编的?我的如果是手动打开一些文件进行修改,不用命令修改,然后一个个手动编是可以成功编译成功的,但是我写成脚本用命令进行全部操作就是编不过去的,真奇怪



我直接进configure把那段检测的代码去掉了。ATK也这样处理了一下。能通过编译。前提是那些库你已经正确编译,make时加个库路经。


页首
 用户资料  
 
11 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2010-01-20 16:37 

注册: 2008-11-01 21:42
帖子: 1028
地址: 树下板凳
送出感谢: 0 次
接收感谢: 1
mark mark 有空也去整整看


_________________
民族的脊梁,是踏实做事的人,非只知道骂街的泼妇。


页首
 用户资料  
 
12 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2010-01-26 11:46 
头像

注册: 2009-05-03 15:00
帖子: 243
地址: 西伺胡同
送出感谢: 0 次
接收感谢: 0 次
:em11 顶起


_________________
编程就像编筐一样


页首
 用户资料  
 
13 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2012-01-12 16:29 

注册: 2009-12-04 13:32
帖子: 151
送出感谢: 0 次
接收感谢: 0 次
好文章要顶!!


页首
 用户资料  
 
14 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2012-02-29 18:37 
头像

注册: 2007-09-23 17:06
帖子: 1051
送出感谢: 1
接收感谢: 8
很详细呀,值得学习。


页首
 用户资料  
 
15 楼 
 文章标题 : Re: 一步步教你交叉编译嵌入式linux GUI-directfb+gtk
帖子发表于 : 2013-08-19 17:23 

注册: 2013-08-19 17:12
帖子: 1
系统: ubuntu3.5.0
送出感谢: 0 次
接收感谢: 0 次
=========开始交叉编译atk=========
bzip2: (stdin) is not a bzip2 file.
tar: Child returned status 2
tar: Error is not recoverable: exiting now
gtk-work/script/build-gtkdfb.sh: 51: cd: can't cd to atk-1.10.3
gtk-work/script/build-gtkdfb.sh: 52: gtk-work/script/build-gtkdfb.sh: ./configure: not found
make: *** No targets specified and no makefile found. Stop.
make: *** No rule to make target `install'. Stop.

./configure怎么会存在的呢?创建的?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 15 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译