Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316641
  • 博文数量: 40
  • 博客积分: 892
  • 博客等级: 准尉
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-25 10:20
文章存档

2011年(40)

分类: LINUX

2011-09-05 10:11:34

   

1)命令安装

apt-get install libqt3-mt

apt-get install qt3-designer

(1)源码安装

(1)建立项目工作目录

mkdir  /root/qt3test

(2)使用designer工具,建立项目的界面布局

cd /root/qt3test

designer

先新建项目工程(名字与工作目录名一样):

建立主界面窗体:

使用标签“TextLabel”在主界面窗体上标签“welcome !”:

完成项目后可以预览演示:

保存:

新建包含主函数的文件:

保存退出:

(3)使用uic工具把项目工程文件与“.ui”文件转换为方便我们编程开发的“.h”和“.cpp”文件:

uic qt3test.ui -o qt3test.h

uic qt3test.ui -i qt3test.h -o qt3test.cpp

ls

(4)先把“.ui”和“.pro”文件剪切移到到新建的“.uipro”目录备份,再利用qmake工具生成新的工程文件和Makefile文件:

mkdir .uipro

mv qt3test.ui qt3test.pro .uipro/

qmake -project

qmake 

ls

(5)真正的QT编程开发(需要C++编程知识):

打开“qt3test.h”,“qt3test.cpp”,进行功能的扩充。或另外添加其他的“.h”和“.cpp”文件,此时需要使用qmake工具重新生成新的工程文件和Makefile文件。

6)编译:

如果遇到提示缺少“g++”,命令安装更新apt-get install g++

make

7)运行测试:

./qt3test

(1)建立交叉编译环境(详见3-3

(2)交叉编译qt-embedded-free

qt-embedded-free-3.3.8.tar.bz2放于目录/root

a、解压qt-embedded-free-3.3.8.tar.bz2,重命名“qt-embedded-free-3.3.8”为“qte”。

# tar xf qt-embedded-free-3.3.8.tar.bz2

# mv qt-embedded-free-3.3.8  qte

b、拷贝编译需要的本机已经安装的uicmoc

# cp /usr/bin/uic   qte/bin

# cp /usr/bin/moc  qte/bin

c、设置qte的环境变量

# cd qte

# pwd     比如显示“/root/test-qt/qte

# export QTEDIR = /root/test-qt/qte

export LD_LIBRARY_PATH 

= $QTEDIR/lib:$LD_LIBRARY_PATH

# export PATH = $QTEDIR/bin:$PATH

# export QTDIR = $QTEDIR:$QTDIR

d、配置qmake

mkspecs/qws目录下新建Cross目录

cd mkspecs/qws/

mkdir gcc-3.4.6

cd gcc-3.4.6

cp ../linux-mips-g++/qmake.conf ./

cp ../linux-mips-g++/qplatformdefs.h ./

修改qmake.conf,将编译器指定为Cross

QMAKE_CC = mipsel-linux-gcc
QMAKE_CXX = mipsel-linux-g++
QMAKE_LINK = mipsel-linux-g++
QMAKE_LINK_SHLIB = mipsel-linux-g++

e、配置、编译

./configure  -qt-gif  -xplatform qws/gcc-3.4.6  -thread  -embedded mips  -qvfb  -no-cups  -depths 4,8,16,24,32 

# make

3)交叉编译qt应用程序“qt3test

qt3test目录下创建交叉编译配置环境脚本:

# vi env.sh

内容为:

export QTDIR=/root/qte

export QMAKEDIR=$QTDIR/qmake

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

export PATH=$QMAKEDIR/bin:$QTDIR/bin:/opt/gcc-3.4.6/bin:$PATH

export QMAKESPEC=qws/linux-mips-g++

# source env.sh

# qmake -project

# qmake

# make

即得到需要移植的可执行程序“qt3test”。

(1)qt3test所需的动态链接库与字体库拷贝到文件系统根目录下

#mkdir /root/rootfs/qte

#cp /root/qte/lib /root/rootfs/qte

(2)把交叉编译得到的可执行程序‘qt3test’拷贝于文件系统根目录

#cp /root/qt3test/qt3test /root/rootfs

(3)编写启动脚本

#cd /root/rootfs

#vi qt3test.sh

内容为:

export QTDIR=/qte

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

4)退出,制作文件系统镜像

$mkfs.cramfs rootfs rootfs-qt3test.img

5)开发板上电,烧写到开发板

PMON> devcp  tftp://192.168.0.244/rootfs-qt3test.img  /dev/mtd1

(6)进到文件系统,运行程序

#sh qt3test.sh

# ./music-player -qws -fn unifont   

至此移植完成

2 实验 SDLAGAR

简介

SDLSimple DirectMedia Layer 的简称,是一个自由的跨平台的多媒体开发包,适用领域如下:

1、游戏

2、游戏SDK

3、模拟器

4、演示软件

5、多媒体应用软件

SDL常用功能有:事件,视频,音频,CD音频,定时器,字节序无关。

1下载和安装

1下载SDL软件

打开地址:,这是基于linux的源代码,本安装包里面已经有一份。

2安装包目录

为了方便,在SDLagar安装包.tar内已备有以下安装包

libtool-1.3.5.tar.gz

SDL-1.2.13.tar.gz

SDL_image-1.2.10.tar.tar

SDL_ttf-2.0.9.tar.gz

freetype-2.4.3.tar.bz2

agar-1.3.4.tar.gz

libpng-1.4.2.tar.gz

jpegsrc.v7.tar.gz

expat-2.0.1.tar.gz

3安装SDL软件

step1 安装libtool-1.3.5.tar.gz

#tar zxvf libtool-1.3.5.tar.gz

#cd SDL-1.2.13

#./configure

#make

#make install

step2安装libiconv-1.13.1.tar.gz

# tar zxvf libiconv-1.13.1.tar.gz

# cd libiconv-1.13.1

# ./configure

# make

# make install

step3安装SDL-1.2.13.tar.gz

# tar zxvf SDL-1.2.13.tar.gz

# cd SDL-1.2.13

# ./configure 

# make install

step4安装SDL_image-1.2.10.tar.tar

SDL_image作用为图像显示

# tar xvf SDL_image-1.2.10.tar.tar

# cd SDL_image-1.2.10

# ./configure

# make

# make install

step5安装freetype-2.4.3.tar.bz2

freetype作用为字体。

#tar zxvf freetype-2.4.3.tar.bz2

#cd freetype-2.4.3

#./configure

#make

#make install

step6 安装SDL_ttf-2.0.9.tar.gz

SDL_ttf作用为文字显示。

# tar zxvf SDL_ttf-2.0.9.tar.gz

# cd SDL_ttf-2.0.9

# ./configure

# make

这里可能会报错,说找不到

/usr/include/multiarch-mipsel-linux/freetype2/freetype/config/ftconfig.h

#mv  /usr/include/multiarch-mips64el-linux  multiarch-mipsel-linux

这样就OK

#make

# make install

setp7安装jpegsrc.v7.tar.gz

jpegsrc.v7作用为支持显示jpeg格式图片

#tar zxvf  jpegsrc.v7.tar.gz

#cd jpeg  jpeg-7

#./configure

#make

#make install

step8安装zlib-1.2.5

#cd zlib-1.2.5

#./configure

#make

#make install 

setp9安装libpng-1.4.2.tar.gz

#tar zxvf libpng-1.4.2.tar.gz

#cd libpng-1.4.2

#./configure

#make 

#make install

step10安装expat-2.0.1.tar.gz

#tar zxvf expat-2.0.1.tar.gz

#cd expat-2.0.1

#./configure

#make

#make install

step11 安装agar-1.3.4.tar.gz(若只要使用SDL,这一步则省去)

# tar zxvf agar-1.3.4.tar.gz

# cd agar-1.3.4

# make clean

# ./configure

# cp /usr/bin/libtool mk/libtool

# make

# make install

2、样例体验

SDL

#cd SDL-1.2.13/test

#make

AGAR

#cd agar-1.3.4/demo

#make

1、设置环境变量

建立交叉编译环境(详见3-3

#export LDFLAGS=-L/opt/mipsel/lib

#export CFLAGS=-I/opt/mipsel/include

2、编译

1编译jpeg-7

软件名称

Libjpeg

功能描述

Libjpeg是一个用c语言编写支持jpeg解码、编码的库

下载地址

软件版本

jpegsrc.v7.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/jpeg-7

#./configure -host=mipsel-linux target=mipsel-linux -prefix=/opt/mipsel 

#make CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

#make install

2编译freetype-2.4.3

软件名称

freetype-2.4.3

功能描述

Freetype是一个用c语言实现的字体栅格化引擎制作的一个库

下载地址

软件版本

freetype-2.4.3.tar.bz2

依赖关系

默认

前置条件

源文件位置:$(work_dir)/freetype-2.4.3

#./configure --prefix=/opt/mipsel --host=mipsel-linux --target=mipsel-linux

#make && make install

 到/opt/ 下查看是否安装成功。生成了所需的头文件和库。

3编译libiconv

软件名称

libiconv

功能描述

libiconv库为需要做转换的程序,实现了一个字符编码到另一个字符编码的转换

下载地址

软件版本

libiconv-1.13.1.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/libiconv-1.13.1

#./configure -host=mipsel-linux -target=mipsel-linux -prefix=/opt/mipsel 

# make CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

# make install

4编译libpng-1.4.2

软件名称

libpng

功能描述

libpng是多种应用程序所使用的解析PNG图形格式的函数库

下载地址

软件版本

libpng-1.4.2.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/libpng-1.4.2

# ./configure -host=mipsel-linux target=mipsel-linux -prefix=/opt/mipsel 

# make CC=mipsel-linux-gcc 

# make install

5编译SDL-1.2.13

软件名称

SDL-1.2.13

功能描述

SDL是一个自由的跨平台的多媒体开发包,适用视频音频和其他应用软件

下载地址

软件版本

SDL-1.2.13.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/SDL-1.2.13.tar.gz

# ./configure -host=mipsel-linux -prefix=/opt/mipsel -disable-static -disable-nasm -disable-video-x11 -disable-x11-shared -disable-dga -disable-video-dga -disable-video-x11-dgamouse -disable-video-x11-vm -disable-video-x11-xv -disable-video-x11-xinerama -disable-video-x11-xme --disable-video-x11-xrander --disable-video-x11-dpms --disable-video-svga --enable-input-tslib

--disable-esd --disable-esdtest --disable-esd-shared --without-x

make

# make install

SDL/test 范例编译

# ./configure --host=mipsel-linux --without-x;

#make

6编译SDL_image-1.2.10

软件名称

SDL_image-1.2.10

功能描述

SDL_image是用于处理图形文件的开源函数库

下载地址

http://www.libsdl.org/projects/SDL_image/

软件版本

SDL_image-1.2.10.tar.tar

依赖关系

默认

前置条件

源文件位置:$(work_dir)/SDL_image-1.2.10

# ./configure -host=mipsel-linux target=mipsel-linux -prefix=/opt/mipsel 

# make CC=mipsel-linux-gcc 

修改项:

<-CFLAGS= -I/usr/local/include/SDL 

->CFLAGS= -I/opt/include/SDL 

<-LIBS = -Wl,rpath,/usr/local/lib  -L /usr/local/lib LSDL lpthread

->LIBS=-Wl,rpath,/opt/lib L/opt/lib LSDL -lpthread

LIBPNG选项 添加成如下参数:

默认为空

SDL_CFLAGSSDL_LIBS选项也修改成如下

make CC=mipsel-linux-gcc 

# make install

7编译SDL_ttf 

软件名称

SDL_ttf-2.0.9

功能描述

SDL_ttf是让应用程序能渲染汉字的扩展库

下载地址

软件版本

SDL_ttf-2.0.9.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/SDL_ttf-2.0.9

# ./configure -host=mipsel-linux target=mipsel-linux -prefix=/opt/mipsel 

修改Makefile文件

>CFLAGS = -g -O2 -I/opt/include/freetype2 -I/opt/include -I/opt/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/opt/include

>FREETYPE_CONFIG = /opt/bin/freetype-config

>LIBS = -L/opt/lib -lfreetype -L/opt/lib -Wl,-rpath,/opt/lib -lSDL -lpthread

local/lib -lfreetype -L/usr/local/lib -Wl,-rpath,/opt/lib -lSDL\ -lpthread

 

>SDL_CFLAGS = -I/opt/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT

>SDL_CONFIG = /opt/bin/sdl-config

>SDL_LIBS = -L/opt/lib -Wl,-rpath,/opt/lib -lSDL,-lpthread

# make CC=mipsel-linux-gcc  AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

make install

若出现以下错误 

则修改149行参数为下图所示

重新配置configure 

# make CC=mipsel-linux-gcc  AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

# make install

8编译agar1.3.4

软件名称

agar-1.3.4

功能描述

agar是基于CC++并且依赖与SDL库的开源图形应用软件

下载地址

软件版本

agar-1.3.4.tar.gz

依赖关系

默认

前置条件

源文件位置:$(work_dir)/agar-1.3.4

# ./configure  --prefix=/opt/mipsel  --without-gl --with-docs 

agar没有host选项基于)

>SDL_CFLAGS = -I/opt/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT

>SDL_LIBS = -L/opt/lib -Wl,-rpath,/opt/lib -lSDL -lpthread

>FREETYPE_CFLAGS= -I/opt/include/freetype2 -I/opt/include

>FREETYPE_LIBS= -L/opt/lib -lfreetype

>JPEG_CFLAGS= -I/opt/include

>JPEG_LIBS= -L/opt/lib -ljpeg

# make CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

编译正确 通过 

# make install

编译agar/demos

此处以loader为范例

# ./configure --without-gl --with-docs

此时需要对makefile.config 文件进行修改

>SDL_CFLAGS=-I/opt/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT

>SDL_LIBS=-L/opt/lib -Wl,-rpath,/opt/lib -lSDL -lpthread

<SDL_LIBS=-L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread

>FREETYPE_CFLAGS=-I/opt/include/freetype2 -I/opt/include

<FREETYPE_CFLAGS=-I/usr/local/include/freetype2 -I/usr/local/include

>FREETYPE_LIBS=-L/opt/lib -lfreetype

<FREETYPE_LIBS=-L/usr/local/lib -lfreetype

>AGAR_CFLAGS=-I/opt/include/agar -I/opt/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/opt/include/freetype2 -I/opt/include

<AGAR_CFLAGS=-I/usr/local/include/agar -I/usr/local/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -I/usr/local/include/freetype2 -I/usr/local/include

>AGAR_LIBS=-L/opt/lib -lag_gui -lag_core -L/opt/lib -Wl,-rpath,/opt/lib -lSDL -lpthread -L/opt/lib -lfreetype -lm -lpthread

<AGAR_LIBS=-L/usr/local/lib -lag_gui -lag_core -L/usr/local/lib -Wl,-rpath,/usr/local/lib -lSDL -lpthread -L/usr/local/lib -lfreetype -lm -lpthread

# make CC=mipsel-linux-gcc AR=mipsel-linux-ar RANLIB=mipsel-linux-ranlib CXX=mipsel-linux-g++

   

1为了方便程序的编译测试,我们将非X11库做个备份:

#cd /usr/

 

#mkdir no_X11

 

#cp -rf local/include no_x11

 

#cp -rf local/lib no_x11

 

这样在no_X11下的库就是非X11库。

 

 

2为了方便的使用这两种库,我们在Makefile.config里指定路径:

 

 

IPR_LIB_DIR=/usr/no_X11/lib

 

 

IPR_INC_DIR=/usr/no_X11/include

 

 

这样得到的可执行程序就是非X11的。

 

 

3移植SDL

 

 

no_X11里面的库放进文件系统lib目录下

 

 

#cd /usr/no_X11

 

#cp libSDL* /home/ipr/ramdisk/lib

 

#cp libfreetype* /home/ipr/ramdisk/lib

 

 

可以看到安装完agar没有看到lib目录下有agar库,因为它是基于SDL的。

 

 

在 SDL-1.2.13/testagar-1.3.4/demos/目录下,有许多例子。可以将例子复制根文件系统

 

 

 

根目录,制作文件系统镜像,烧写文件系统镜像于开发板上。也可以把交叉编译得到的

 

 

例子使用网络传输于开发板上。

 

至此移植完成。

3 实验三 DirectFB 

(1)

DirectFB-1.3.0.tar.gz
DirectFB-examples-1.2.0.tar.gz

(2)编译安装:

DirectFB-1.3.0

$sudo tar zxvf DirectFB-1.3.0.tar.gz
$cd DirectFB-1.3.0

$./configure

提示:如果在./configure这步出现下面的提示:
      PNG support is missing - many applications won't work correctly!
      JPEG support is missing - many applications won't work correctly!
      FreeType2 support is missing - many applications won't work correctly!

参考解决方法:

查找关于png方面的包:  $apt-cache search libpng

安装查找的相关包:      $apt-get install libpng12-dev

$apt-cache search libjpeg

$apt-get install libjpeg62-dev

$apt-cache search libfreetype

$apt-get install libfreetype6-dev

$sudo make 

$sudo make install

DirectFB-examples-1.2.0

$sudo tar zxvf DirectFB-examples-1.2.0.tar.gz

提示1找到directfb.pc的路径,让其能找到对应的directfb

更新数据库

$updatedb    

查找directfb.pc
$locate directfb.pc

例如得到信息:

/huang/DirectFB-1.3.0/directfb.pc

/huang/DirectFB-1.3.0/directfb.pc.in

/usr/local/lib/pkgconfig/directfb.pc

提示2接着设置环境,上一步得到的pkgconfig库目录加入环境之中:
$export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
(这样只能在当前终端可以运行,关机后还得自已运行些命令,才能运行dfb程序, 要永久性加入可这样:
如你用的是root用户,可以$vi /root/.profile中加入:
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig )


$cd DirectFB-examples-1.2.0

$./configure

$.sudo make

$sudo make install

(3)运行样例

指定directfb的库目录:
$sudo vi /etc/ld.so.conf

在最后一行加入:/usr/local/lib,保存退出。

更新:

$ldconfig
创建配置文件:

$sudo vi /usr/local/etc/directfbrc

内容为:

system = x11

wm = default

mode = 640x480

scaled = 640x480

depth = 32

pixelformat = RGB32

mouse-protocol = IMPS/2

bg-color = 00FFFF

目录/usr/local/binDirectFB-examples-1.2.0/src下测试样例

$cd DirectFB-examples-1.2.0/src

$sudo df_andi        

准备:

zlib-1.2.5.tar.bz2

freetype‐2.3.5.tar.bz2

libpng-1.2.40.tar.bz2

jpegsrc.v6b.tar.gz

DirectFB-1.3.0.tar.gz

DirectFB-examples-1.2.0.tar.gz

交叉编译DirectFB

1)配置环境:

建立交叉编译环境(详见3-3);

$mkdir /usr/directfb

$export PREFIX=/usr/directfb

$export LDFLAGS=-L$PREFIX/lib 

$export CFLAGS="-g -I$PREFIX/include" 

$export CPPFLAGS="-g -I$PREFIX/include"

$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig

2zlib-1.2.5

$tar jxvf zlib-1.2.5.tar.bz2 

$cd zlib-1.2.5

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

——不能加“--host=mipsel-linux”,否则出错。

$vi Makefile
——Makfile里的gccarranlib全都替换成mipsel-linux-gccmipsel-linux-ar mipsel-linux-ranlib

$make

$make install

3freetype‐2.3.5

$tar jxvf freetype‐2.3.5.tar.bz2

$cd freetype‐2.3.5

$./configure  --host=mipsel-linux  --prefix=$PREFIX

$make

$make install

4libpng-1.2.40

$tar jxvf libpng-1.2.40.tar.bz2

$cd libpng-1.2.40

$./configure  --host=mipsel-linux  --prefix=$PREFIX   --with-gnu-ld

$make

$make install

5jpegsrc.v6b

$tar zxvf jpegsrc.v6b.tar.gz

$cd jpeg-6b

$./configure  --host=mipsel-linux  --prefix=$PREFIX   --enable-shared

$vi Makefile

——Makefile里的gcc替换成mipsel-linux-gcc

$make

$make install

6DirectFB-1.3.0

$tar zxvf DirectFB-1.3.0.tar.gz

$cd DirectFB-1.3.0

$./configure --prefix=$PREFIX --host=mipsel-linux --enable-sdl=no  --enable-x11=no --enable-jpeg  --enable-freetype  --enable-png   --with-gfxdrivers=none

参考:如果需要关闭jpeg的支持,可以加上--enable-jpeg=no
这里设置的DirectFB的安装路径是/usr/directfb,那么在目标系统中也必须保证DirectFB是在这样的一个目录中。因为DirectFB编译时已经把这个目录编译到程序中,无法后期设置。

$make

参考解决办法:

$cp /usr/directfb/lib/lib* /opt/gcc-3.4.6/mipsel-linux/lib/

——主要是用第五步的libpng-1.2.40所编译出来的库文件

来更新交叉编译工具链的动态库文件libpng12.so

$make install

7DirectFB-examples-1.2.0

$tar zxvf DirectFB-examples-1.2.0.tar.gz

$cd DirectFB-examples-1.2.0

$./configure  --host=mipsel-linux  --prefix=$PREFIX

$make

$make install

8可以查看交叉编译后的文件信息

$cd /usr/directfb/bin

$ls

$file df_andi

可以看到返回信息

df_andi: ELF 32-bit LSB executable, MIPS, MIPS-II version 1 (SYSV),  dynamically linked (uses shared libs), for GNU/Linux 2.4.0, not stripped

DirectFB与样例交叉编译完成。

(1)拷贝样例程序于根文件系统的目录下

$cd /root/rootfs

$cp /usr/directfb usr

(2)编写配置环境的脚本

$vi fb.sh

内容为:

export LD_LIBRARY_PATH=/usr/directfb/lib:$LD_LIBRARY_PATH

(3)创建设备节点

$mknod dev/fb0 c 29 0

$ln -s dev/console dev/tty0

(4)创建DirectFB的配置文件

$vi usr/directfb/etc/directfbrc

内容为:

system = fbdev

fbdev = /dev/fb0

wm = default

mode = 320x240

epth = 16

pixelformat = RGB16

mouse-protocol = IMPS/2

bg-color = 00FFFF

no-vt

(5)退出,制作文件系统镜像

$mkfs.cramfs rootfs rootfs-directfb.img

(6)开发板上电,烧写到开发板

PMON> devcp  tftp://192.168.0.244/rootfs-directfb.img  /dev/mtd1

(7)进到文件系统,运行样例

#sh fb.sh

#cd /usr/directfb/bin

#ls

#./df_andi

可以看到许多移动的企鹅。

至此移植完成

阅读(2499) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~