Qt在各平台上的搭建qt-everywhere
Qt for windows7-64bit
在电脑上安装mingw(搜索mingw for windows),将C:\MinGW\bin添加进环境变量,打开命令行输入gcc --version和g++ --version和mingw32-make --version验证安装成功
解压qt-everywhere-opensource-src-4.8.1.tar.gz并进入目录
configure -debug-and-release -opensource -platform win32-g++ -webkit
mingw32-make
把qt-everywhere-opensource-src-4.8.1/bin加入PATH
qmake –version
mingw32-make docs 生成doc-build文件夹文档
Qt已安装完毕,cmd命令行下使用如下命令生成可执行文件
qmake -project
qmake
mingw32-make // debug目录下生成可执行文件
debug\文件名.exe
Ubuntu 12.04-32bit Linux X11平台
用于X Window System(如Solaris、AIX、HP-UX、Linux、BSD)
tar zxvf qt-everywhere-opensource-src-4.8.1.tar.gz
在./configure前主动装好下面3个包
sudo apt-get install libX11-dev libXext-dev libXtst-dev
./configure -debug -developer-build -opensource -shared -fast -no-multimedia -xmlpatterns -no-audio-backend -no-phonon -svg -no-webkit -javascript-jit -script -scripttools -declarative -declarative-debug -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -no-openssl -verbose -optimized-qmake -no-xinerama -no-xvideo -no-xshape -no-xsync
make
make install
Qt已安装完毕,使用如下命令生成可执行文件
/usr/local/Trolltech/Qt-4.8.1/bin/qmake -project // qmake默认安装路径
/usr/local/Trolltech/Qt-4.8.1/bin/qmake
make
./生成的可执行文件
Linux 下编译、安装、配置 QT
http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html
嵌入式x86平台
可以通过编译移除不常使用的组件与功能。通过自己的视窗系统QWS,不需依赖X Window System,直接写入Linux帧缓冲。可以减少存储器消耗。并提供虚拟帧缓冲QVFB,方便在桌面系统上进行嵌入式测试。
解压qt-everywhere-opensource-src-4.8.1.tar.gz并进入
apt-get install qt4-dev-tools
./configure -embedded x86 -qvfb -no-webkit
make
make install
qt embedded x86被安装在/usr/local/Trolltech/QtEmbedded-4.8.1,里面的qmake, moc,uic等都是for embedded x86,用来编译embedded程序的
Qt已安装完毕,测试
/usr/local/Trolltech/QtEmbedded-4.8.1/bin/qmake -project
/usr/local/Trolltech/QtEmbedded-4.8.1/bin/qmake
make
qvfb -width 800 -height 600 & // 打开qvfb用来显示程序
./可执行文件名 -qws // 程序显示在qvfb上
QT是基于C/S模型的,也就是客户端/服务器模型,QT如果需要运行图形界面程序就需要server端的支持。这个服务器端就是QWS Server。默认情况下,嵌入式端的系统是不会启动QWS Server的,所以如果只有一个图形界面程序,就必须给它加上-qws参数,让它以服务器的形式运行,这样才能启动QWS Server。
嵌入式arm平台
先根据手册在linux上搭建mtk开发环境,安装好交叉编译工具(linux上有armv6z-mediatek451_001_vfp-linux-gnueabi-gcc这条命令)
解压qt-everywhere-opensource-src-4.8.1.tar.gz并进入
在qt-everywhere-opensource-src-4.8.1/mkspecs/qws/下创建armv6z-mediatek451_001_vfp-linux-gnueabi/文件夹,复制linux-arm-g++目录下的qplatformdefs.h和qmake.conf到armv6z-mediatek451_001_vfp-linux-gnueabi下,修改qmake.conf,在qmake.conf中加入如下两行
QT_CFLAGS_DIRECTFB = -I/opt/share/release/BDP_Linux/oss/library/DirectFB/usr /include/directfb -D_REENTRANT
QT_LIBS_DIRECTFB = -L/opt/share/release/BDP_Linux/oss/library/DirectFB/lib - ldirectfb -lfusion -ldirect -lpthread
(解压release/BDP_Linux/oss/library/DirectFB)
以下为qmake.conf文件内容
# qmake configuration for building with armv6z-mediatek-linux-gnueabi-g++
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = armv6z-mediatek451_001_vfp-linux-gnueabi-gcc
QMAKE_CXX = armv6z-mediatek451_001_vfp-linux-gnueabi-g++
QMAKE_LINK = armv6z-mediatek451_001_vfp-linux-gnueabi-g++
QMAKE_LINK_SHLIB = armv6z-mediatek451_001_vfp-linux-gnueabi-g++
# modifications to linux.conf
QMAKE_AR = armv6z-mediatek451_001_vfp-linux-gnueabi-ar cqs
QMAKE_OBJCOPY = armv6z-mediatek451_001_vfp-linux-gnueabi-objcopy
QMAKE_STRIP = armv6z-mediatek451_001_vfp-linux-gnueabi-strip
QT_CFLAGS_DIRECTFB = -I/opt/share/release/BDP_Linux/oss/library/DirectFB/usr /include/directfb -D_REENTRANT
QT_LIBS_DIRECTFB = -L/opt/share/release/BDP_Linux/oss/library/DirectFB/lib - ldirectfb -lfusion -ldirect -lpthread load(qt_config)
修改qt-everywhere-opensource-src-4.8.1/src/corelib/io/io.pri
linux-*|armv6z-*:{ // linux-*后面加上|armv6z-*
然后安装
./configure -release -embedded arm -fast -xplatform qws/armv6z-mediatek451_001_vfp-linux-gnueabi -v -developer-build -opensource -xmlpatterns -svg -no-webkit -javascript-jit -script -scripttools -declarative -optimized-qmake -reduce-relocations -exceptions -depths all -lrt -qt-zlib -qt-libtiff -qt-libpng -qt-libmng -qt-libjpeg -qt-freetype -no-dbus -nomake examples -nomake demos -nomake docs -nomake translations -no-largefile -no-phonon -no-phonon-backend -no-opengl -no-multimedia -no-audio-backend -no-declarative-debug -plugin-gfx-directfb -no-gfx-transformed -no-gfx-qvfb -no-gfx-vnc -no-gfx-multiscreen -no-gfx-qnx -no-gfx-integrityfb -little-endian -host-little-endian -qt-sql-sqlite -openssl-linked -I/home/release/BDP_Linux/oss/library/openssl/usr/include -L/home/release/BDP_Linux/oss/library/openssl/usr/lib -lssl -lcrypto -prefix /opt/share/qt-4.8.1-arm
(记得解压release/BDP_Linux/oss/library/openssl,-I和-L路径可能有所不同(I=include , L=library)
-xplatform 参数
QT使用qmake 产生Makefile,为了让QT在不同平台下编译,QT预先定义一些平台Makefile变量。这一些变量根据编译平台不同,采用不同的值。如QMAKE_CC在ARM-LINUX下等于arm-linux-gcc,这一些变量都存在名为qmake.conf文件里。当qmake生成Makefile时,将采用这个文件的值。QT已经针对所有测试过的平台都写相应的qmake.conf,它全部放在QT目录下的mkspecs目录,其中针对QT窗口系统(QWS)的平台放在 mkspecs/qws下面。
-xplatform 就是告诉configure ,生成qt 4.8.1库的Makefile采用哪一个qmake.conf。
configure -xplatform qws/linux-arm-g++ 即表示采用 qws/linux-arm-g++的qmake.conf,而且这个格式很简单,所以如果有一个新的嵌入式平台,你完全可以在qws建个类似qmake.conf,只要用xplatform通知configure 即可。但是目录名必须是 linux-XXXX-g++(所以上面的红字修改是因为我们的qmake.conf文件夹不是以linux开头)
-prefix 参数
Qt安装的路径
configure完成后根据提示
gmake
gmake install
安装成功,测试
/qt-4.8.1-armv6z/bin/qmake -project
/qt-4.8.1-armv6z/bin/qmake
make
交叉编译成功
QT编译出错解决
搭建好nfs
将程序挂载到开发板上,命令为:mount -o nolock 192.168.100.182:/opt/nfs /mnt/ubi_boot/nfs
nfs mount 默认选项包括文件锁,依赖于portmap提供的动态端口分配功能,简单的解决方法:kill 文件锁(lockd)或者mount -o nolock
-o options 主要用来描述设备或档案的挂载方式,由于很多嵌入式设备的根文件系统中不带portmap,所以一般都使用-o nolock参数,即不使用NFS文件锁,这样就可以避免使用portmap。
挂载成功后将程序拷贝到/mnt/ubi_boot/main目录下,由于程序运行需要一些Qt库,需要显示到电视机(directfb),添加环境变量(可写成脚本执行,然后用source qtenv.sh命令使环境变量生效,echo $查看变量是否设置成功)
export QTDIR=/
export QT_PLUGIN_PATH=$QTDIR/plugins/
export LD_LIBRARY_PATH=$QTDIR/lib:/usr/lib:/usr/local/lib:/mnt/ubi_boot/main
然后执行程序./可执行文件名-qws -display directfb
QTE4.6移植以及相关参数介绍
http://blog.csdn.net/songjinshi/article/details/6554346
qt embedded-linux 4.5.2+arm移植开发环境搭建全攻略
http://hi.baidu.com/deep_pro/item/fe01ecbd3fddc3d684dd7943
附录
Qt configure 参数说明(中文)
http://blog.csdn.net/mociml/article/details/5317592
Building Qt
http://processors.wiki.ti.com/index.php/Building_Qt
Qt4.7.4下单独编译QtWebkit
http://blog.sina.com.cn/s/blog_8738908f0100u84l.html
Ubuntu12.04下配置安装Qt4.6.3 及移植到mini2440开发板及其使用全过程
http://blog.csdn.net/mybelief321/article/details/10137993
http://www.quweiji.com/qt%E5%9C%A8%E5%90%84%E5%B9%B3%E5%8F%B0%E4%B8%8A%E7%9A%84%E6%90%AD%E5%BB%BAqt-everywhere/
Qt在各平台上的搭建qt-everywhere的更多相关文章
- Qt在各平台上的搭建qt-everywhere(Qt for windows7-64bit, Ubuntu 12.04-32bit, 嵌入式x86平台, 嵌入式arm平台)
下载地址:http://download.qt.io/ 当进入解压好的源码包后,使用./configure –help命令,可以获得相应帮助,前面是*号的表示默认参数. +号表示该功能要求被评估,评估 ...
- Qt在Android平台上实现html转PDF的功能
Qt for Android Qt for Android enables you to run Qt 5 applications Android devices. All Qt modules ( ...
- Windows平台上安装搭建iPhone/iPad的开发环境
http://www.cnblogs.com/hanxianlong/archive/2015/09/20/4824227.html http://blog.csdn.net/yahohi/artic ...
- 让Qt在MIPS Linux上运行 good
下载 首先下载Qt everywhere,当前的版本是4.7.2,可以从nokia的网站上下载,也可以从git服务器上下载.考虑到文件有200M 以上的大小,下载速率低于25kBPS的,需要考虑从什么 ...
- Qt国际化(Q_DECLARE_TR_FUNCTIONS() 宏给非Qt类添加翻译支持,以前没见过QTextEncoder和QTextDecoder和QLibraryInfo::location()和QEvent::LanguageChange)
Internationalization with Qt 应用程序的国际化就是使得程序能在国际间可用而不仅仅是在本国可用的过程. Relevant Qt Classes andAPIs 以下的类支持Q ...
- Ubuntu 12.04下搭建Qt开发环境
http://download.qt.io/official_releases/qt/ Ubuntu 环境下Gtk与Qt编译环境安装与配置(系统环境是Ubuntu 12.04) 1.配置基础开发环境G ...
- QT树莓派交叉编译环开发环境搭建(附多个exe工具下载链接)
前两天入手了一块2.8’的tft液晶显示屏,于是和树莓派连了一发,成功将命令行显示在了这块小的可怜的屏幕上之后,觉得这屏幕就显示个黑白内容太浪费了,于是考虑开发一个”脸”(图形用户界面,GUI).首先 ...
- 搭建QT环境
开始使用QT时,环境配置好了,以后才不会有这方面的麻烦,所以第一步,把自己的工作环境搭建好! 下面是我的环境搭建过程,留个记录,也为了后来者能少走一些弯路. 注:本人的系统是WIN7x64位的,其他系 ...
- Qt环境搭建(Qt Creator)+Visual Studio
1.http://www.cnblogs.com/ranjiewen/p/5318768.html 简述 经常有人问我编写Qt程序时使用什么IDE,其实这个真的很难回答(各有所长),只能说看个人爱好了 ...
随机推荐
- .Net时间计算函数,统计某一天是一年的第几周,这一周从哪天开始到哪天结束
/// <summary> /// 计算某年第一周的天数 /// </summary> /// <param name="dt& ...
- ubuntu-12.04.4-server安装
一.系统ISO下载 下载地址:http://www.ubuntu.com/download 根据自己的需求下载,我的电脑配置一般,因此选择32位的. 二.虚拟机配置 ...
- Win7搭建Django开发环境
1.官网下载并安装python 2.7.5 2.配置python 环境变量 在Path中加入python安装目录: PATH=PATH;c:\python26 在PATHEXT中加入以下变量,可以直接 ...
- activity的生命周期【转】
关于activity的生命周期,越来越感觉很重要.activity的生命周期有点像asp.net中page的生命周期,经历好几个过程.重写不同的阶段,可以完成不同的功能和效果.先上一张经典的生命周期图 ...
- cc2540 cc2541 低功耗实測和总结-与注意事项 - 低功耗小于10uA
CC2541 CC2540 实现超低功耗是很重要的: 我们来总结一下实现方法: 1,有定时器在跑时会一直跑在 PM2 电流在 300uA左右. 没有定时器跑后会到 PM3 , 电流会少于1 ...
- API和DLL
API API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用 ...
- [转]Win7、Windows Server 2008下无法在Windows Service中打开一个已经存在的Excel 2007文件问题的解决方案
昨天,组里一个小朋友告诉我,他写的报表生成服务中无法打开一个已经存在的Excel 2007文件,他的开发环境是Win7.Visual Studio .Net 2008(Windows Server 2 ...
- Linux(Debain)环境安装WordPress
一.相关组件安装 1. 安装Apache apt-get install apache2 安装完毕后浏览器 http://localhost/ 或者 http://127.0.0.1 出现It Wor ...
- js页面跳转 和 js打开新窗口 方法
js页面跳转 和 js打开新窗口 方法 第一种: 第二种: 第三种: 第四种: 第五种: 1.在原来的窗体中直接跳转用 window.location.href="你所要跳转的页面" ...
- vector中resize和reserve的区别,代码验证
#include <vector> using namespace std; int main() { vector<int> resizeVect; vector<in ...