全部博文(40)
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、拷贝编译需要的本机已经安装的uic、moc
# 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 实验二 SDL和AGAR简介:
SDL为Simple DirectMedia Layer 的简称,是一个自由的跨平台的多媒体开发包,适用领域如下:
1、游戏
2、游戏SDK
3、模拟器
4、演示软件
5、多媒体应用软件
SDL常用功能有:事件,视频,音频,CD音频,定时器,字节序无关。
1、下载和安装
(1)下载SDL软件
打开地址:,这是基于linux的源代码,本安装包里面已经有一份。
(2)安装包目录
为了方便,在“SDL及agar安装包.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_CFLAGS、SDL_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
>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是基于C和C++并且依赖与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/test或agar-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/bin或DirectFB-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
(2)zlib-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里的gcc,ar,ranlib全都替换成mipsel-linux-gcc,mipsel-linux-ar, mipsel-linux-ranlib。
$make
$make install
(3)freetype‐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
(4)libpng-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
(5)jpegsrc.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
(6)DirectFB-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
(7)DirectFB-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
可以看到许多移动的企鹅。
至此移植完成。