时间就是一切。
全部博文(36)
分类: 系统运维
2008-01-23 13:02:52
本次配置的PC机环境是在 完全安装REDHAT9 下进行的,开发板是FriendlyARM2440 (购于广州友善公司)及提供的相关资料。
1、资源包
arm-linux-gcc-2.95.3.tgz
arm-linux-gcc-
arm-linux-gcc-
x86-qtopia.tgz:用于在X86 上运行的Qtopia 开发包
arm-qtopia.tgz:用于在ARM 上运行的Qtopia 开发包,支持USB 鼠标
ipaq-qtopia.tgz:用于在ARM 上运行的Qtopia 开发包,支持触摸屏
三个版本的不同仅在于各自编译参数不同,其他的源代码都是一样的包含以下三个文件
tmake-1.11.tar.gz
qt-embedded-
qtopia-free-
qt-x11-
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-
#tar zxvf arm-linux-gcc-
选择编译器:
vi /etc/profile
pathmunge /usr/local/arm/
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 是不是
2、PC机的编译环境配置过程
……/ x86-qtopia/
#tar zxvf tmake-1.11.tar.gz
#tar zxvf qt-embedded-
#tar jxvf qtopia-free-
#tar zxvf qt-x11-
#mv tmake-1.11 tmake
#mv qt-
#mv qtopia-free-
#mv qt-
2.1、qt-x11-
编译它的目的是得到uic、moc、designer、qvfb 等所需工具。
#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.2、qt-embedded-
……/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.4、qtopia-free-
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.1、qt-x11-
编译它的目的是得到uic、moc、designer、qvfb 等所需工具。
#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/
同样注销重新登陆,检查编译器的版本 是不是
……/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.3、qtopia-free-
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
1:echo $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 图标了,如图,您可以使用鼠标点击运行它。