Chinaunix首页 | 论坛 | 博客
  • 博客访问: 204627
  • 博文数量: 36
  • 博客积分: 2501
  • 博客等级: 少校
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-18 23:27
个人简介

时间就是一切。

文章分类

全部博文(36)

文章存档

2023年(1)

2017年(2)

2016年(6)

2014年(1)

2009年(1)

2008年(15)

2007年(10)

我的朋友

分类: 系统运维

2008-01-23 13:02:52

本次配置的PC机环境是在 完全安装REDHAT9 下进行的,开发板是FriendlyARM2440 (购于广州友善公司)及提供的相关资料。

1、资源包

arm-linux-gcc-2.95.3.tgz

arm-linux-gcc-3.3.2.tgz

arm-linux-gcc-3.4.1.tgz

x86-qtopia.tgz:用于在X86 上运行的Qtopia 开发包

arm-qtopia.tgz:用于在ARM 上运行的Qtopia 开发包,支持USB 鼠标

ipaq-qtopia.tgz:用于在ARM 上运行的Qtopia 开发包,支持触摸屏

三个版本的不同仅在于各自编译参数不同,其他的源代码都是一样的包含以下三个文件

tmake-1.11.tar.gz

qt-embedded-2.3.7.tar.gz

qtopia-free-1.7.0.tar.bz2

qt-x11-2.3.2.tar.gz

make p /opt/dj/

把这些文件解压放在 /opt/dj/ 里面并重新命名

#tar zxvf x86-qtopia.tgz  –C  /opt/dj/

#tar zxvf arm-qtopia.tg  –C  /opt/dj/

#tar zxvf arm-linux-gcc-3.4.1.tgz C /    // 编译ARM QTOPIA

#tar zxvf arm-linux-gcc-3.3.2.tgz C /    // 内核

 

选择编译器:

vi /etc/profile

pathmunge /usr/local/arm/3.4.1/bin

vi /etc/ld.so.conf

/opt/dj/x86-qtopia/qt/lib

/opt/dj/x86-qtopia/qtopia/lib

/usr/kerberos/lib

/usr/X11R6/lib

/usr/lib/sane

/usr/lib/mysql

 

注销系统重新登陆 看看 arm-linux-gcc v 是不是 3.4.1 的 如果不是你的profile 就不对。那就编译不过去。

 

2PC机的编译环境配置过程

……/ x86-qtopia/

#tar zxvf tmake-1.11.tar.gz

#tar zxvf qt-embedded-2.3.7.tar.gz

#tar jxvf qtopia-free-1.7.0.tar.bz2

#tar zxvf qt-x11-2.3.2.tar.gz

#mv tmake-1.11 tmake

#mv qt-2.3.7 qt

#mv qtopia-free-1.7.0 qtopia

#mv qt-2.3.2 qt-x11

2.1qt-x11-2.3.2.tar.gz

编译它的目的是得到uicmocdesignerqvfb 等所需工具。

#cd qt-x11

#export QTDIR=$PWD

#./configure static no-xft no-opengl no-sm   //这是厂商提供的编译选项,这些配置不全只是最基本的编译,不支持图片,所以在编译的时候自己添加一些支持图片的选项。

./configure -static -no-xft -no-opengl -no-sm -qt-libpng -system-jpeg -qt-zlib -system-libmng -system-nas-sound -shared -thread

yes

#make C src/moc

#cp src/moc/moc bin

#make C src

#make C tools/designer

#make C tools/qvfb

#cp tools/qvfb/qvfb bin

#strip bin/uic bin/moc bin/designer bin/qvfb

#cd ..

#cp qt-x11/bin/* qt/bin

#rm rf qt-x11 //这一步是可要可不要,为了方便这一步我的认为还是不要的好。

2.2qt-embedded-2.3.7.tar.gz

……/x86-qtopia

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

cd qt

make clean //清出src 里面的moc

cp ../qtopia/src/qt/qconfig-qpe.h src/tools/

#./configure platform linux-generic-g++ -qconfig qpe depths 16,24 //同样配置的功能不全

(echo yes; echo yes ) |./configure -system-jpeg -gif -system-libpng -system-zlib -platform linux-generic-g++  -qconfig qpe -depths 16,24,32 //添加一些支持动画,不同的图片格式。

make -C src

cd ..

2.3 编译运行基于Qt/Embedded 的应用程序

Hello 应用程序

创建、进入hello 目录

#mkdir hello

#cd hello

#vi hello.cpp

编辑hello.cpp

#include

#include

int main(int argc, char *argv[]){

QApplication app(argc, argv);

QPushButton hello(hello world!, 0);

hello.resize(100, 30);

app.setMainWidget(&hello);

hello.show();

return app.exec();

}

设置host 运行下的环境变量

#vi setEnvHost

注:假设已经设定了TMAKEDIR,QTEDIR 等变量

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

export QTDIR=$QTEDIR

export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

#. ./setEnvHost

#progen n hello o hello.pro

#tmake o Makefile hello.pro

#make

出现错误:

g++ -c pipe DQWS fno-exceptions fno-rtti Wall W O2 DNO_DEBUG

I/x86-qtopia/qt/include o hello.o hello.cpp

gcc o hello hello.o L/x86-qtopia/qt/lib lqte

/x86-qtopia/qt/lib/libqte.so: undefined reference to operator new[](unsigned)

/x86-qtopia/qt/lib/libqte.so: undefined reference to operator delete(void*)

/x86-qtopia/qt/lib/libqte.so: undefined reference to cos

/x86-qtopia/qt/lib/libqte.so: undefined reference to sin

/x86-qtopia/qt/lib/libqte.so: undefined reference to __cxa_pure_virtual

/x86-qtopia/qt/lib/libqte.so: undefined reference to pow

/x86-qtopia/qt/lib/libqte.so: undefined reference to operator delete[](void*)

/x86-qtopia/qt/lib/libqte.so: undefined reference to operator new(unsigned)

collect2: ld returned 1 exit status

make: *** [hello] Error 1

原因是Makefile 里的LINK 项应该为g++ 而不是gcc , 修改

tmake/lib/qws/linux-generic-g++/tmake.conf

#vi $TMAKEPATH/tmake.conf

TMAKE_LINK = gcc TMAKE_LINK_SHLIB = gcc

分别修改成

TMAKE_LINK = g++TMAKE_LINK_SHLIB = g++

#tmake o Makefile hello.pro

此时查看Makefile 里的LINK 项应该已经为g++

#make

#./hello qws 注:另一终端已运行qvfb

以上是测试qt-embedded-2.3.7.tar.gz是否安装成功

 

2.4qtopia-free-1.7.0.tar.bz2

cd qtopia/src

./configure  -platform linux-generic-g++

Make

 

运行QQ2440 X86-QTOPIA 里面的例子 hello

先要设置以下环境变量:运行里面的 set-env : . set-env 前面以 “。”加空格键。

vi set-env 可以看见里面的内容

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-generic-g++

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

export KDEDIR=./kde

然后

Cd hello

make

将在 ……/qtopia/bin/  生成可执行文件hello

再开另外一个总端 来运行 ……/qt/bin/qvfb ,再运行 ……/qtopia/bin/qpe .这是一个开发板在PC机的一个模拟环境。在上面你可以看到 Hello2440 运行即可。

(第一次运行qpe 的时候要进行一些设置不要以为是错误)。如果没有出错PC机环境配置完毕。

 

3、              ARM开发环境也就是交叉编译环境。

3.1qt-x11-2.3.2.tar.gz 2.1步完全相同,可以将 2.1 步编译的文件直接拷贝过来用。将他复制下来以便编译的方便。

编译它的目的是得到uicmocdesignerqvfb 等所需工具。

#cd qt-x11

#export QTDIR=$PWD

#./configure static no-xft no-opengl no-sm   //这是厂商提供的编译选项,这些配置不全只是最基本的编译,不支持图片,所以在编译的时候自己添加一些支持图片的选项。

./configure -static -no-xft -no-opengl -no-sm -qt-libpng -system-jpeg -qt-zlib -system-libmng -system-nas-sound -shared -thread

yes

#make C src/moc

#cp src/moc/moc bin

#make C src

#make C tools/designer

#make C tools/qvfb

#cp tools/qvfb/qvfb bin

#strip bin/uic bin/moc bin/designer

#cd ..

#cp qt-x11/bin/* qt/bin

#rm rf qt-x11 //这一步是可要可不要,为了方便这一步我的认为还是不要的好。

3.2、因为是编译程序到目标板子上去所以得换编译器:

vi /etc/profile

 pathmunge /usr/local/arm/3.3.2/bin

同样注销重新登陆,检查编译器的版本 是不是 3.3.2

……/arm-qtopia/

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

cd qt

make clean

cp ../qtopia/src/qt/qconfig-qpe.h src/tools/

(echo yes ; echo no) | ./configure -system-jpeg -gif -system-libpng -system-zlib -platform linux-arm-g++ -qconfig qpe -depths 16,24,32

make -C src

cd ..

3.3qtopia-free-1.7.0.tar.bz2

cd qtopia/src

./configure  -platform linux-arm-g++

make

运行QQ2440 ARM-QTOPIA 里面的例子 hello

先要设置以下环境变量:运行里面的 set-env : . set-env 前面以 “。”加空格键。

vi set-env 可以看见里面的内容

export QTDIR=$PWD/qt

export QPEDIR=$PWD/qtopia

export TMAKEDIR=$PWD/tmake

export TMAKEPATH=$TMAKEDIR/lib/qws/linux-arm-g++

export PATH=$QTDIR/bin:$QPEDIR/bin:$TMAKEDIR/bin:$PATH

export KDEDIR=./kde

cd hello

make

make 时如果出现如下错误:

test.cpp:1:33: qtopia/qpeapplication: 没有那个文件或目录

test.cpp: In function `int main(int, char**)':

 

 

test.cpp:5: `QPEApplication' undeclared (first use this function)

 

 

test.cpp:5: (Each undeclared identifier is reported only once for each function it appears in.)

test.cpp:5: parse error before `(' token

test.cpp:8: `app' undeclared (first use this function)

test.cpp:4: warning: unused parameter `int argc'

test.cpp:4: warning: unused parameter `char**argv'

make: *** [test.o] Error 1

1echo $QTDIR

……/arm-qtopia/qt/

2:pro:config=qtopia warn_no release

3:makfile link=arm-ling-gcc / arm-ling-g++

 

将在 ……/qtopia/bin/  生成可执行文件hello

FTP hello.desktop ……/qtpoia/bin/hello 上传到目标板上去,用PC机的 minicom 来改变hello 文件的执行权限通过串口现在到开发板的文件是没有执行权限的,所以我们需要先使用chmod 命令改变它的执行权限,再把它放到正确的目录里面。

#mv hello /opt/qtopia/bin

#mv hello.desktop /opt/qtopia/apps/Applications

现在重新启动开发板或者重新启动qtopia,就可以看到hello 图标了,如图,您可以使用鼠标点击运行它。

 

 

阅读(2962) | 评论(0) | 转发(0) |
0

上一篇:Qtopia添加应用程序

下一篇:edit

给主人留下些什么吧!~~