Qt4.5.2 在ARM平台的搭建、移植详解
来源:互联网 发布:slam 单片机 编辑:程序博客网 时间:2024/05/17 06:31
Qt4.5.2 在ARM平台交叉编译的搭建、移植详解
一、Qt嵌入式开发平台的建立
概述:Qt嵌入式开发平台包括:
1、Qt-X11开发平台:(即为我们平时开发Qt应用程序时使用的系统平台)。
2、Qt/Embedded-4.5.2开发平台(即framebuffer):该平台可以让Qt程序在pc机上模拟在嵌入式平台的运行情况,一般在Qt/Embedded上模拟运行成功后才,进行交叉编译。
3、Qt/Embedded-4.5.2-arm交叉编译平台:在此平台下编译通过的Qt程序就可以移植到arm板上运行了。
step1:
建立Pc开发平台(x11、redhat9的桌面就属于X11):
下载Qt4.5.2pc开发包qt-x11-opensource-src-4.5.2.tar.gz(下载地址:ftp://ftp.trolltech.com/qt/source/)
#tar xzvf qt-x11-opensource-src-4.5.2.tar.gz
#cd qt-x11-opensource-src-4.5.2
#./configure -qvfb
#make
#cd tools/qvfb
#make
#cd ../..
#make install
安装好后,系统默认安装在/usr/local/Trolltech/Qt-4.5.2目录下
检查环境变量:
#which qmake
复制文件
进入/usr/local/Trolltech会看到一个Qt-4.5.2的目录,将 /home/tools/qt-x11-opensource-src-4.5.2/bin/目录下的qvfb相关文件拷贝到/usr /local/Trolltech/Qt-4.5.2/bin目录下
#cp qvfb* /usr/local/Trolltech/Qt-4.5.2/bin
注意:在configure时有可能会报如下的错误提示:
Basic XLib functionality test failed!
You might need to modify the include and library search paths by editing
QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /usr/include/qt/qt-x11-opensource-src-4.5.2/mkspecs/linux-g++.
有两个原因会造成这个错误(具体的错误信息可以进config.test/x11/xlib执行make命令)
1、没有安装libxext和libX11-dev
2、安装了但路径与QT设置的不一样,这时你需要根据提示修改mkspecs/common/linux.conf中的宏定义
step2:
建立qt-embedded -4.5.2编译平台(此时编译器仍然用的是默认的gcc)
#tar xzvf qt-embedded-linux-opensource-src-4.5.2.tar.gz
#cd qt-embedded-linux-opensource-src-4.5.2
./configure -embedded x86 -qvfb -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
#make install
安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtEmbedded-4.5.2就表示安装成功了
step3:
qt-embedded -4.5.2-arm交叉编译平台的建立(此时不是用系统默认的gcc来编译了)
#tar xzvf qt-embedded-linux-opensource-src-4.5.2.tar.gz
#cd qt-embedded-linux-opensource-src-4.5.2
#./configure -embedded arm //注意几个选项,必须加上 -embedded arm选项
#make install
安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtEmbedded-4.5.2-arm就表示安装成功了
注意:如果你的arm平台用的不是arm-linux-g++的编译器,则需修改mkspecs/qws/linux-arm-g++/qmake.conf
step4:
设置环境变量:环境变量的设法总的说来有4种(export、profile、.bashrc、.bashrc_profile)具体看自己情况来定
#vi /root/.bash_profile //在环境变量的最前面加上一句:
PATH=/usr/local/Trolltech/QtEmbedded-4.5.2 /bin:$PATH
#source /root/.bash-Profile //使环境变量生效
好了平台已经搭建好了,可以用他来编译Qt程序了
注意:如果要编成arm平台的程序,需将环境变量改为
PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH
设置虚拟屏幕
#export DISPLAY=:0.0
# qvfb & //运行qvfb
step5:
用qt-embedded -4.5.2来进行编译,在x86上运行程序
以hello例子,其源程序如下:
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel("Hello Qt!");
label->show();
return app.exec();
}
将上面内容保存为hello.cpp
#qmake -v //检查自己的qt环境变量是否正确,如果不正确的话,就返回第4步
#cd myqtprogram //进入自己写的qt程序
#qmake -project //生成.pro工程文件
#qmake //生成Makefile
#make //生成执行程序
#./myqtprogram -qws //运行程序
如果要生成arm平台的程序,可通过修改环境变量,使 用qt-embedded -4.5.2-arm来进行交叉编译,使其生成arm平台的程序
step6:
如果要在arm板上运行QT程序,在进行交叉编译后,查看自己写的Qt程序需要用到哪些库文件资源。
#ldd myqtprogram
如果不支持ldd命令,可以使用arm-linux-readelf -a -myqtprogram | grep Shared //Shared首字母大写;
step7:
拷贝库文件:
根据上一步提示把Qt程序要用到的资源文件拷到自己制作的根文件系统中,以下是按本人写的Qt程序所需要的库写的
将程序移植到arm板运行
拷贝库文件到自己制作的root系统中(注意:拷贝时一定要看看大小,千万不要拷到连接文件(相当于快捷方式)了)
#cd usr/lib
#cp /usr/local/Trolltech/ QtEmbedded-4.5.2-arm /lib/libpng* ./ //把图形库考过去,否则图片显示不了,强烈建议用png、bmp格式的图片,用其他格式的图片的话,否则你还要自己做连接库
#cp /usr/local/Trolltech/ QtEmbedded-4.5.2-arm /lib/libQtCore.so libQtGui.so ./ //这2个库不用说一定要考的
#cp /usr/local/Trolltech/ QtEmbedded-4.5.2-arm /lib/libQtNetwork.so ./ //和网络相关的库
#cp /usr/local/Trolltech/ QtEmbedded-4.5.2-arm /lib/libstdc++.so ./
#cd ../ //以下是在根文件系统qt-root/usr/local/下制增加一个Trolltech/ QtEmbedded -4.5.2-arm/lib/fonts路径目录并添加相应的字体文件,否则在arm板上会出错显示不了字
#mkdir local/Trolletch
#mkdir local/Trolletch/QtEmbedded-4.5.2-arm
#mkdir local/Trolletch/QtEmbedded-4.5.2-arm /lib
#cp /usr/local/Trolltech/QtEmbedded-4.5.2-arm /lib/fonts local/Trolletch/QtEmbedded -4.5.2-arm/lib //注意不要拷错路径了
step8:
把程序下载到arm板运行
注意:如果arm板上液晶显示的设备不是/dev/fb0,则需链接过去,否则运行时会提示找不到fb0
#./myqtprogram -qws //-qws表示以服务器模式运行
ok能在板子上跑起来了
常见问题解决方法:
1、 运行QT程序报如下错误
Qt for Embedded Linux data directory is not owned by user 520h
解决方法是将/tmp目录下的qtembedded-0目录删除。造成该错误是因为用户没有该目录的权限。
- Qt4.5.2 在ARM平台的搭建、移植详解
- QT4.7.0 在ARM平台移植
- QT4.7.0 在ARM平台移植
- Qt4.4.3 在s3c2440平台的移植
- 移植基于Qt4.4-tp1的WebKit到ARM平台
- Qt4.7.2移植至arm平台
- 移植qt4.8.5到ARM平台
- qt4.8 移植到Arm 平台
- qt4.8.6 移植到 freescale (arm 平台)
- qt4.5.2和tslib1.4在arm上的移植配置
- telnet在arm平台的移植
- boa在ARM平台的移植
- OpenCV在ARM平台上的移植
- madplay在arm平台的移植
- telnet在arm平台的移植
- Qt4 在x86和arm平台上的一些配置
- Qt4.4.3 在s3c2440平台的移植(EMBEDDED 7)
- Qt4.8.5移植到嵌入式linux(arm平台)
- Shell的控制结构l列表
- [Swift 开发] Swift UIScrollView
- 类型值和变量
- Java格式化输出学习笔记
- oracle 常用函数整理
- Qt4.5.2 在ARM平台的搭建、移植详解
- 入职,新人的三天总结
- win7图标变白色的解决办法
- Java接口和实现的异常处理
- 社説 原発政策―「決め方」を見直すときだ
- 第一个java的a+b
- 数据库设计和使用的一些常用好习惯
- 怎样在 Ubuntu 12.04 中安装和设置 Samba 实现网上邻居共享
- j2ee的deployment tool是个什么