Linux 下编译并安装配置Qt 全过程 (1)
Linux 下Qt Creator 的安装使用 (4)
Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x系列) (5)
Qt4.3.5-X11-交叉编译平台的搭建、移植详解收藏 (9)
QT-embedded-4.5 for arm的安装和使用收藏 (12)
qt交叉编译工具的建立收藏 (17)
Linux 下编译并安装配置
Qt 全过程
最近准备做Nokia 的Symbian,Maemo 下触摸屏开发。考虑到程序的跨平台可移植性,最终选择使用Qt 开发。相对来说,国内关于Qt 相关文档并不算很多。作者将Linux 下编译并安装配置Qt 全过程总结了一下,只希望可以方便更多的朋友!
1。获得源代码
src 官网下载地址:ftp://https://www.sodocs.net/doc/2912328246.html,/qt/source/
2009 年10 月1 日发布的qt-x11-opensource-src-4.5.3.tar.gz,大小122 Mb。
````
2。解压缩
tar xvfz qt-x11-opensource-src-4.5.3.tar.gz
3。生成makefile 文件
./configure-fast -no-openssl -qvfb
这个时候他会问你:“Which edition of Qt do you want to use?”
然后给你两个类型供选择:
Type 'c' if you want to use the Commercial Edition.
Type 'o' if you want to use the Open Source Edition.
第一个是商业版,第二个是自由版。
选择'o'(Qt/嵌入式自由版是Qt为了开发自由软件提供的嵌入式版本)。
这时候,出现许可界面。
选择'yes' 接受许可协议。
开始生成makefile 文件。这个大约需要5 -10 分钟的时间。
4。Qt 编译
gmake
这个过程时间比较长,需要两个小时左右。
5。Qt 安装
运行gmake install
默认安装至/usr/local/Trolltech/Qt-4.5.3
大约5 -10 分钟。正常结束,安装完毕。
运行/usr/local/Trolltech/Qt-4.5.3/bin/designer ,看见qt 启动,也就是说qt 安装好了。
6。设置环境变量
一。先修改用户环境变量
vi /home/defonds/.bashrc
在其最后添加以下信息
export QTDIR=/usr/local/Trolltech/Qt-4.5.3
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
二。再修改所有用户环境变量
vi /etc/profile
在其最后添加以下信息
export QTDIR=/usr/local/Trolltech/Qt-4.5.3
export PATH=$QTDIR/bin:$PATH
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
三。测试一下
重新开一个终端,输入命令:
qmake -v
输出结果:
QMake version 2.01a
Using Qt version 4.5.3 in /usr/local/Trolltech/Qt-4.5.3/lib
输入命令:
which qmake
输出结果:
/usr/local/Trolltech/Qt-4.5.3/bin/qmake
证明Qt 环境变量已经被配置成功。
编者按:
Linux 启动时,先读取用户环境变量,即/home/defonds/.bashrc 的设置。次读取所有用户环境变量,即/etc/profile 中的配置。
开始Qt
写个简单的Qt 程序使用安装的Qt 编译来测试一下它的工作效果
新建一个文件名为hello.cpp,其内容如下:
view plaincopy to clipboardprint?
1.#include
2.#include
3.int main(int argc,char *argv[])
4.{
5. QApplication app(argc,argv);
6. QLabel *label = new QLabel("Hello Qt!");
7. label->show();
8.return app.exec();
9.}
保存hello.cpp,编译过程如下:
在hello.cpp 所在目录下,运行命令
qmake -project
hello.cpp 同目录下有hello.pro 文件被生成,它是与平台无关的工程文件。
在hello.cpp 所在目录下,运行命令
qmake hello.pro
同目录下有Makefile 文件被生成(Makefile是指导编译器编译源代码的配置文件,在其目录下输入make命令(nmake在win32,vc6环境)就可以完成编译)。
在hello.cpp 所在目录下,运行命令
make
同目录下有hello,hello.o 两个文件被编译生成。其中hello 就是在当前Linux 系统下使用Qt 编译生成的可执行文件了。双击运行hello,“Hello Qt!“ 文本框弹出,
OK!做到这一步,证明Qt 已经完全可以在你的电脑上运作了。还等什么呢,开始你精彩而又愉快的Qt 开发之旅吧!
Linux 下Qt Creator 的
安装使用
Qt 以其开源,免费,完全面向对象(很容易扩展),允许真正的组件编程以及可移植跨平台等诸多优势得到越来越多的开发人员的青睐。Qt Creator 是Nokia 官方推出的专门针对Qt 开发的IDE。本文详细介绍了Linux 下Qt Creator 的安装,并针对Qt Creator 的使用举了一个Hello World 级别的例子,希望对第一次接触Qt Creator 的朋友可以起到抛砖引玉的作用。
Qt Creator 安装
1。准备
下载并安装好Qt(关于Qt 的编译并安装配置,请参考作者的前一篇博客《Linux 下编译并安装配置Qt 全过程》)。
2。查看
查看自己电脑系统情况,终端输入命令:
uname -a
作者的是x86_64 GNU/Linux。
3。下载
到Qt 官方网站下载与自己电脑相配套的Qt Creator,地址是
https://www.sodocs.net/doc/2912328246.html,/downloads。Qt Creator 的最新版本是1.3.0,作者选择的是Qt Creator 1.3.0 Binary for Linux/X11 64-bit (48 MB)。
4。安装
下载后得到大小47.2 Mb 的安装文件
qt-creator-linux-x86_64-opensource-1.3.0.bin,在Linux 上安装如下:chmod u+x ./qt-creator-linux-x86_64-opensource-1.3.0.bin
./qt-creator-linux-x86_64-opensource-1.3.0.bin
这时候,启动了Setup Qt Creator 欢迎安装对话框,点击“Next”->
协议许可界面,选择“I accept the agreement”,点击“Next” ->
选择Qt Creator 安装目录对话框。作者选择的是
/home/defonds/TOOLS/qtcreator/qtcreator-1.3.0,点击“Next” -> 准备安装界面,点击“Next” ->
安装结束,点击“Finish”。
Qt Creator 使用
新建项目HelloWorld
启动桌面上的Qt Creator。新建工程HelloWorld,菜单点击“File” -> New File or Project... -> Projects 中选择Empty Qt4 Project -> OK -> 项目名键入
HelloWorld,工作台随意,作者选择的是/home/defonds/cpp/qt ,Next -> Finish。
新建类Hello
右键单击项目名HelloWorld,Add New... -> C++ 下选择C++ Source File,点击“OK” -> 输入类名Hello 点击“Next” -> Finish。
这个时候Hello.cpp 被创建,双击它进行编辑,编辑内容仍采用上一篇博客《Linux 下编译并安装配置Qt 全过程》中的例子,其内容如下:
view plaincopy to clipboardprint?
1.#include
2.#include
3.int main(int argc,char *argv[])
4.{
5. QApplication app(argc,argv);
6. QLabel *label = new QLabel("Hello Qt!");
7. label->show();
8.return app.exec();
9.}
保存,菜单栏选择Build -> Run,“Hello Qt!”对话框弹出,证明你写的Qt 程序编译OK。
这个时候,在/home/defonds/cpp/qt/HelloWorld 目录下有个可执行文件HelloWorld 被生成,双击它,就可以弹出“Hello Qt!”对话框。它就是你在Linux 下使用Qt Creator 开发出的第一个Qt 项目。
Arm-Linux嵌入式QT/E环境的建立(qt/e 3.x
系列)
QT/E 3.x系列比QT/E 2.x系列有非常大的改进,大大提高了开发进度,不再使用tmake,安装也更简单。但目前在网上关于QT/E 3.x系列的介绍还是比较少,所以本文介绍一下QT/E 3.x系列的安装。
一、建立arm交叉编译工具链
在安装QT/E之前,应确保arm-linux交叉编译工具链已经建立,如果还没有可以参考以下步骤建立。
1、下载交叉编译工具cross-2.95.3.tar.bz2(或其他版本如:cross-3.4.4.tar.bz2),这是已经制作好的arm交叉编译工具链,只需解压及建交环境变量即可使用。
2、把文件cross-2.95.3.tar.bz2拷贝到一个文件夹,这里我用:/usr/local/arm这个目录。注意后面建立环境变量时要与之对应。
3、解压tar -xjvf cross-2.95.3.tar.bz2
4、建立环境变量export PATH=/usr/local/arm/2.95.3/bin:$PATH
或者也可以写进文件~/.bashrc中,这样就不用每次开机都export啦。
vi ~/.bashrc
在后面加上export PATH=/usr/local/arm/2.95.3/bin:$PATH
到此arm-linux交叉编译工具链就已经建好了。
二、编译QT
1、QT/E自由版可到官网ftp下载。网址是:ftp://https://www.sodocs.net/doc/2912328246.html,/qt/source/。可自己选择一个版本下载,个人认为QT/E 3.x系列比较好用,不过QT/E 2.x系列在网上的资料比较多。但建议不用qt/e 3.3.x 的版本,因为在本人开发的过程当中试用过qt/e 3.3.4和qt/e3.3.8,发现它们在ARM开发板上占CPU的资源特高,一直占cpu 98%左右,现在我还没找到原因,不知道有没有哪位朋友也遇到这个问题。推荐用qt/e 3.1.0版本,我正在用,没遇到什么问题。
(注:问题已经得到解决,原来是键盘接口没做好,等有空与大家分享一下移植键盘接口的过程)
2、在这里,本人假设用的是qt-embedded-free-3.1.0.tar.bz2
3、把文件qt-embedded-free-3.1.0.tar.bz2 拷贝到一个文件夹,这里我用:/usr/local/arm这个目录。注意后面建立环境变量时要与之对应。
4、解压tar -xjvf qt-embedded-free-3.1.0.tar.bz2
把解压后的文件夹qt-embedded-free-3.1.0改为qte。(可以不改,这里是为了方便,注意后面建立环境变量时要与之对应)
mv qt-embedded-free-3.1.0 qte
5、建立环境变量
vi ~/.bashrc
在后面加上
export QTDIR=/usr/local/arm/qte
export QTEDIR=$QTDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH (请重新登陆,以使得环境变量生效)
6、配置QT
进入QT/E目录: cd $QTDIR
输入: ./configure -embedded arm -thread -no-cups -qvfb
-depths 4,8,16,32
上述选项:-embedded arm 指目标平台为arm;-thread 表示支持qt线程,本人开发当中用到;-qvfb 表示支持虚拟缓冲帧工具qvfb;-depths 4,8,16,32 表示支持4,8,16,32 位的显示颜色深度。还有很多选项就不一一列举,请查
看 ./configure -help。
此外还有一个选项我没用的是-qconfig local,你可以把一些开关变量写到一个文件qconfig-local.h 中,并把它放到$QTDIR/src/tools下。可参考这个目录下的qconfig-small.h、qconfig-medium.h 、qconfig-large.h等文件,直接使用它们也行,如:-qconfig small 。通过这些开关变量,可以把一些开发当中用不着的构件去掉,减少qt库的大小。这里要对QT比较熟练,初学者可先不理。
(本人在家里编译到这里曾出现编译$QTDIR/include/qvaluestack.h 这个文件的时候出错,后来把qt3.3.8对应的文件拷贝过来覆盖便通过了,估计是与gcc的版本不兼容的问题,我在公司里没出现过这种问题)
7、编译
make sub-src // 指定按精简方式编译开发包,也就是说有些Qt 类未被编译。
8、测试
至此编译工作完成,最后测试一下是否能正常使用。我们可以用QT自带的例子来测试,如:
cd $QTDIR/examples/aclock //或你自己新建一个QT工程也行
make clean //把原来的清掉
rm *.pro Makefile //删掉,重新建立工程文件
qmake -project
qmake -spec $QTDIR/mkspecs/qws/linux-arm-g++ -o Ma kefile
-spec指定目标板的配置文件,这里我做的是linux arm平台,注意在这里,$QTDIR/mkspecs/qws/linux-arm-g++ 它不是编译器,是一个配置文件,而编译时用的编译器是我们在第一步建立的arm交叉编译工具链里面的编译器。
make
如果没出错就表示你的QT/E环境已经成功建立。如果提示说
cannot find -lqte,那么你试一下修改Makefile文件,找到-lqte ,把它改为-lqte-mt 再make一次一般就行了。这是因为如果用到QT线程或其它一些原因,它生成的库不再是libqte.so.3.1.0,而是libqte-mt.so.3.1.0,所以它便找不到了。
三、移植到开发板(以下都是在目标机环境下)
1、新建一个目录,如:/qt/lib。进入此目录cd /qt/lib
2、通过ftp 把上面生成的qt库文件libqte-mt.so.3.1.0下载到开发板/qt/lib/目录下。(注意:不要用wget 下载,会破坏库文件,从而出现ld.so: dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic
tag"'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' failed!.这种错误)
3、创建qt库连接:
ln -s libqte-mt.so.3.1.0 libqte-mt.so
ln -s libqte-mt.so.3.1.0 libqte-mt.so.3
ln -s libqte-mt.so.3.1.0 libqte-mt.so.3.1
4、建立环境变量
vi ~/.bashrc
在后面加上
export QTDIR=/qt
export QTEDIR=$QTDIR
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
4、到此目标板的环境已经建好。现在可以把上面的例子aclock下载到目标板上试一下能不能跑起来!
在开发板控制台下输入: ./aclock -qws
如果能跑起来但是键盘用不了,那是正常的情况,因为键盘、鼠标等设备的接口还没加进QT/E的原因,而这个不是一两句话能说清的,所以留到以后再另外补充!
补充一点:如果有类似这样的提示: "./aclock: error while loading shared libraries: libstdc++.so.6: cannot load shared object file: No such file or directory." 你可以从我们第一步建立的arm交叉编译工具链里的
/usr/local/arm/2.95.3/arm-linux/lib/目录下找到相应的库文件下载到开发板的/lib 目录下即可。
Qt4.3.5-X11-交叉编译平台的搭建、移植详解收藏
首先我们要知道的是Qt平台有Pc开发平台,(以本人所装的
Redhat9linux/Qt4.3.5/arm-3.4.1版本为例)
一、Qt嵌入式开发平台的建立
概述:Qt嵌入式开发平台包括:
1、Qt-X11开发平台:(即为我们平时开发Qt应用程序时使用的系统平台)。
2、QtopiaCore-4.3.5开发平台(即framebuffer):该平台可以让Qt程序在pc 机上模拟在嵌入式平台的运行情况,一般在QtopiaCore上模拟运行成功后才,进行交叉编译。
3、QtopiaCore-4.3.5-arm交叉编译平台:在此平台下编译通过的Qt程序就可以移植到arm板上运行了。
step1:
建立Pc开发平台(x11、redhat9的桌面就属于X11):
下载Qt4.3.5pc开发包qt-x11-opensource-src-4.3.5.tar.gz
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure -no-openssl //去除安全检查
#make install //此过程需要3-8小时
安装好后,系统默认安装在/usr/local/Trolltech/Qt-4.3.5目录下
检查环境变量:
#which qmake
step2:
建立QtopiaCore-4.3.5编译平台(此时编译器仍然用的是默认的gcc)
此平台下的安装包原码包和X11平台是一样的,只是configure时配置不同
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure -embedded x86 -qvbf -no-openssl //注意几个选项表示,以qvfb表示 -no-openssl表示不需要认证,否则会安装过程中一直叫你输入yes确认 #make install //此过程需要3-8个小时
安装完成后usr目录多了一个文件夹/usr/local/Trolltech/QtopiaCore-4.3.5就表示安装成功了
step3:
QtoptiaCore-4.3.5-arm交叉编译平台的建立(此时不是用系统默认的gcc来编译了)
此平台下的安装源码包X11平台是一样的,只是configure时配置不同
#tar xzvf qt-x11-opensource-src-4.3.5.tar.gz
#cd Qt-4.3.5
#./configure -embedded arm //注意几个选项,必须加上 -embedded arm 选项
#make install //此过程需要3-8个小时
安装完成后usr目录多了一个文件夹
/usr/local/Trolltech/QtopiaCore-4.3.5-arm就表示安装成功了
step4:
设置环境变量:环境变量的设法总的说来有4种(export、
profile、.bashrc、.bashrc_profile)具体看自己情况来定
#vi /root/.bash_profile //在环境变量的最前面加上一
句:PATH=/usr/local/Trolltech/QtopiaCore-4.3.5-arm/bin:$PATH #source /root/.bash-Profile //使环境变量生效
好了平台已经搭建好了,可以用他来编译Qt程序了
step5:
用QtopiaCore-4.3.5-arm来进行交叉编译
#qmake -v //检查自己的qt环境变量是否正确,如果不正确的话,就返回第4步
#cd myqtprogram //进入自己写的qt程序
#qmake -project //根QtX11环境一样编译
#qmake
#./myqtprogram //运行程序
step6:
察看自己写的Qt程序需要用到哪些库文件资源。
#arm-linux-readelf -a -myqtprogram | grep Shared //Shared首字母大写;
step7:
拷贝库文件:
根据上一步提示把Qt程序要用到的资源文件拷到自己制作的根文件系统中,以下是按本人写的Qt程序所需要的库写的
将程序移植到arm板运行,根文件系统root.cramfs和kernel的制作在这里就不细说了,本人用的是自己早做好的qt-root文件系统。
拷贝库文件到自己制作的root系统中(注意:拷贝时一定要看看大小,千万不要拷到连接文件(相当于快捷方式)了)
#cd qt-root
#cd usr/lib //注意这里不要进到pc机linux的usr目录下去了
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libpng* ./ //把图形库考过去,否则图片显示不了,强烈建议用png、bmp格式的图片,用其他格式的图片的话,否则你还要自己做连接库
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtCore.so libQtGui .so ./ //这2个库不用说一定要考的
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libQtNetwork.so ./ //和网络相关的库
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/libstdc++.so ./
#cd ../ //以下是在根文件系统qt-root/usr/local/下制增加一个
Trolltech/QtopiaCore-4.3.5-arm/lib/fonts路径目录并添加相应的字体文件,否则在arm板上会出错显示不了字
#mkdir local/Trolletch
#mkdir local/Trolletch/Qtopia-4.3.5-arm
#mkdir local/Trolletch/Qtopia-4.3.5-arm/lib
#cp /usr/local/Trolltech/QtopiaCore-4.3.5-arm/lib/fonts local/Trolletch/ Qtopia-4.3.5-arm/lib //注意不要拷错路径了
step8:
把程序下载到arm板运行(注意:本人是用的microsoft的附件/通讯工具/超级终端连接到板子上,以下的操作对象都是在板子上了)
#./ln -s /dev/fb/0 /dev/fb0 //由于本人的板子上烧的root文件系统显示设备名称和路径都不匹配,所以只有给他做个连接了,否则运行时会提示找不到fd0
#./myqtprogram -qws //-qws表示以服务器模式运行
ok能在板子上跑起来了
QT-embedded-4.5 for arm的安装和使用收藏
以下是详细的安装过程,如果想避免漫长的编译过程,可以下载已经编译安装好的压缩包QtEmbedded-4.5.1-arm.tar.gz,解压缩到/usr/local/Trolltech目录下(若无Trolltech 则创建此目录),直接从step3开始。
# tar zxvf QtEmbedded-4.5.1-arm.tar.gz -C /usr/local/Trolltech
完整安装过程:
step1. 将qt-embedded-linux-opensource-src-4.5.1.tar.gz拷贝到Linux下,解压缩:
# tar zxvf qt-embedded-linux-opensource-src-4.5.1.tar.gz
# cd qt-embedded-linux-opensource-src-4.5.1
修改
qt-embedded-linux-opensource-src-4.5.1/src/gui/embedded/qmouselinuxtp_q ws.h,在头文件处加入:
#define QT_QWS_IPAQ
#define QT_QWS_IPAQ_RAW
step2. 配置选项并安装,也可以下载安装脚本qte_for_arm.sh:
#./configure \
-embedded arm \
-qt-sql-sqlite \
-plugin-sql-sqlite \
-no-scripttools \
-no-nis \
-exceptions \
-xmlpatterns \
-no-largefile \
-no-libmng \
-no-accessibility \
-depths 16 \
-nomake docs \
-make tools \
-make libs \
-qt-zlib \
-feature-THREAD \
-feature-CONCURRENT \
-feature-SOUND \
-feature-EFFECTS \
-feature-QWS_MULTIPROCESS \
-silent > log_cfg 2>&1
#make && make install
step3. 设置环境变量(两种方法):
仅当前用户有效(其他用户无效):修改$HOME/.bash_profile,加入:
PATH=/usr/local/Trolltech/QtEmbedded-4.5.1-arm/bin:$PATH
立即生效:
#source $HOME/.bash_profile
所有用户有效(包括root和普通用户):修改/etc/profile,加入以下行(一般在最后一行添加):
export PATH=/usr/local/Trolltech/ QtEmbedded-4.5.1-arm/bin:$PATH
立即生效:
#source /etc/profile
step4. 要移植Qt-embedded到开发板上,需要拷贝的Qte基本库文件、图片插件库和字体文件:
1) QtEmbedded-4.5.1-arm/lib/libQtGui.so.4.5.1
2) QtEmbedded-4.5.1-arm/lib/libQtNetwork.so.4.5.1
3) QtEmbedded-4.5.1-arm/lib/libQtCore.so.4.5.1
4) QtEmbedded-4.5.1-arm/lib/libQtSql.so.4.5.1
5) QtEmbedded-4.5.1-arm/plugins/imageformats
6) QtEmbedded-4.5.1-arm/lib/fonts
在Linux PC上建立文件夹,将上述文件拷入:
#mkdir opt qt lib plugins
#mv plugins qt
#mv lib qt
#mv qt opt
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/libQtGui.so.4.5.1
opt/qt/lib
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/libQtNetwork.so.4.5.1 opt/qt/lib
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/libQtCore.so.4.5.1 opt/qt/lib
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/libQtSql.so.4.5.1
opt/qt/lib
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/plugins/imageformats opt/qt/plugins
#cp /usr/local/Trolltech/QtEmbedded-4.5.1-arm/lib/fonts opt/qt/lib
然后创建库链接:
ln -s opt/qt/lib/libQtGui.so.4.5.1 opt/qt/lib/libQtGui.so.4
ln -s opt/qt/lib/libQtCore.so.4.5.1 opt/qt/lib/libQtCore.so.4
ln -s opt/qt/lib/libQtNetwork.so.4.5.1 opt/qt/lib/libQtNetwork.so.4
ln -s opt/qt/lib/libQtSql.so.4.5.1 opt/qt/lib/libQtSql.so.4
step5. 将opt/qt 加入到开发板根文件系统中,然后通过tftp方式将此根文件系统烧写进开发板。
step6. 在开发板上设置环境变量:
#export set QTDIR=/opt/qt
#export PATH=$QTDIR:$PATH
#export
LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY _PATH
#export QT_PLUGIN_PATH=$QTDIR/plugins/
#export QT_QWS_FONTDIR=$QTDIR/lib/fonts
#export set QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw
step7. 初次使用触摸屏还需要校正,到安装源目录
qt-embedded-linux-opensource-src-4.5.1/examples/qws/mousecalibration下
#qmake -project
#qmake
#make
将生成的mousecalibration拷到开发板上运行,进行五点校正。
step8. 将Qt-Embedded程序运行在目标板上:用Qt-Embedded for arm的库编译Qt-Embedded应用程序,以demo为例,确保qmake是来自
/usr/local/Trolltech/QtEmbedded-4.5.1-arm/bin:
# qmake -project
# qmake
# make
将得到的demo程序下载到目标板上,在运行程序前以下环境变量必须已经设置:
export QTDIR=/opt/qt:$QTDIR
export PATH=$QTDIR:$QTDIR/plugins:$PATH
export
LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY _PATH
export set QWS_MOUSE_PROTO=LinuxTP:/dev/h3600_tsraw
export QT_PLUGIN_PATH=$QTDIR/plugins/
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_DISPLAY=LinuxFb:/dev/fb0
export QWS_DISPLAY="LinuxFb:mmWidth100:mmHeight130:0"
export QWS_SIZE=800x480
然后在目标板的终端上输入:
#./demo -qws
即可运行。
qt交叉编译工具的建立收藏
一部分转用的人家的,一部分我的经验!
学习笔记----图形界面程序Qt安装及其在2410上的移植
本文主要内容为编译器的安装,安装与建立Qt 桌面运行环境,Qt/E 的交叉编译,建立本机Qtopia 虚拟平台,Qtopia2.1.1 在2410-上的移植.
预备:编译器安装
编译器: arm-linux-gcc-3.4.1.tar.bz2
(软件从网上下载,如果不知道从什么地方下载,google就是了。)
把软件arm-linux-gcc-3.4.1.tar.bz2拷贝到/usr/local下,在终端执行如下命令安装:tar -xjf arm-linux-gcc-3.4.1.tar.bz2
生成的编译工具在目录/usr/local/arm/3.4.1/bin下,修改/etc/profile,增加如下一行。这可以让我们直接运行arm-linux-gcc,而不必将其绝对路径都写出来,不过这得重新启动后才生效:
pathmunge /usr/local/arm/3.4.1/bin
硬件:UP-NETARM2410S
这一步,不一定要下载同样的版本的交叉编译工具,我用的是2.95.3,在执行完这一步的时候,把环境变量加入到profile以后,注消一下,以便于以后的路径里面是arm-linux-g++.
下面的安装以及环境变量的设置,按照这里说的进行,但是有一点要注意,在configure的时候选择large模式,要不可能会出现make出错,可以试试,如果出错了,再make clean就是了.
我按照说明,只进行到了第二点结束,因为我认为,qtopia暂时没有必要试用.
还有我觉得这个里面使用的版本太低,我会尝试都使用qt3的版本的库文件.
还有他在交叉生成编译文件的时候,使用了progen和tmake,他的用法有点不对,我觉得,
我是这么用的:
假设hello工程有hello.h和hello.cpp两个文件,先用progen生成pro文件,其实progen 的意思就是pro文件的gernerate(生成)工具.
progen -o hello.pro
tmake hello.pro -o Makefile
make
中间可以查看一下makefile文件的内容,注
意,CXX=arm-linux-g++,LINK=arm-linux-g++.
再可以把make后的文件看看,file hello,系统会显示这个是一个elf文件就是说这个是一个arm上面执行的文件!
在交叉编译生成可执行文件的时候,也就是在操作(三)下面的第三点的时候,如果新开的一
个终端,那么以前的定义的一些临时的环境变量是消失了的,一般系统也带有qt,而我们的嵌入式的qt版本比系统的低级,最好是不要在系统路径下面设置环境变量,tmake已经加入了系统路径了,所以我们要重新设置一下,或者说定义一下.如下:
echo $TMAKEPATH
查看返回的结果的结尾字符是否是“……/qws/linux-arm-g++”,如果不是的话需要在命令行中重新设置TMAKEPATH
export TMAKEPATH=/tmake 的安装路径(如$TMAKEDIR)
/lib/qws/linux-arm-g++
我的系统就是:
export TMAKEPATH=/gg/tmake-1.13/lib/qws/linux-arm-g++
再设置QTDIR和QTEDIR:
QTEDIR要设置成为QTE的文件夹,export QTEDIR=$PWD/qt-2.3.10-target,PWD是我所在的路径,我的是/gg,也就是export QTEDIR=/gg/qt-2.3.10-target
再export QTDIR=$QTEDIR就可以直接使用progen以及tmake工具了.
以上是如何生成elf格式的文件,要生成主机上使用的.o文件怎么弄呢?
第一种方法:
首先安装系统时候也安装了高版本的qt,可以使用这个qt,用qmake工具,首先用qtdesigner创建一个pro文件和一些相应的.h和.cpp文件,比如hello.cpp然后,qmake hello.pro,再make生成Makefile,再make成功的话就可以./hello了.
第二种方法:
就是用下面安装的低级版本的qt库来运行,条件就是开始已经安装了这些库,有一点要注意的就是要按照安装时候设置的路径重新定义一下环境变量.否则会出错的.
当然了这里也要用qtdesigner创建一个pro文件和一些相应的.h和.cpp文件,然后用progen和tmake工具生成makefile!
还有一点要注意就是qvfb这个工具不一定要用tools里面的,可以在网上新下载一个编译之后运行,可以把路径加入系统路径以后方便自己用.
一. 安装与建立Qt 桌面运行环境
软件:PC 机操作系统REDHAT LINUX 9.0 +MINICOM +ARM-LINUX 开发环境tmake-1.13.tar.gz qt-embedded-2.3.10-free.tar.gz
qt-x11-2.3.2 .tar.gz
软件从网上下载,如果不知道从什么地方下载,google就是了。
把本次实验用到的三个文件拷贝到/root/2410sQt目录下,以下的步骤是假设你在
/root/2410sQt 下操作的。
Qt/Embedded 平台的搭建需要以下几步:
第一步,解压安装包并设置环境变量
tar –xzvf tmake-1.13.tar.gz
tar –xzvf qt-x11-2.3.2.tar.gz
tar –xzvf
qt-embedded-2.3.10-free.tar.gz
mv qt-2.3.10 qt-2.3.10-host
export TMAKEDIR=$PWD/tmake-1.13
export QT2DIR=$PWD/qt-2.3.2
export QTEDIR=$PWD/qt-2.3.10-host
环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包.
注意: 在以下安装中,make命令执行前先执行一下make clean命令.
第二步,编译Qt/Embedded。
1.Build Qt2.3.2
cd $QT2DIR
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
make clean
./configure -no-xft
这个地方要注意,large 模式
make
mkdir $QTEDIR/bin
cp bin/uic $QTEDIR/bin/
2. Build Qvfb
export TMAKEPATH=$TMAKEDIR/lib/linux-g++
export QTDIR=$QT2DIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
cd $QTEDIR/tools/qvfb
make clean
tmake -o Makefile qvfb.pro
make
mv qvfb $QTEDIR/bin/
这一步build qvfb 并建立了从Qt/Embedded 2.3.10 到Qt 2.3.2 的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。
3. Build Qt/Embedded
cd $QTEDIR
export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++
export QTDIR=$QTEDIR
export PATH=$QTDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
make clean
./configure -no-xft -qvfb -depths 4,8,16,32
make
第三步查看运行结果
如果上面各步都能够成功的编译通过,下面就可以通过运行
Qt/Embedded 自带的demo 来查看运行结果。
●在Virtual framebuffer 上运行:
export QTDIR=$QTEDIR
export PATH=$QTEDIR/bin:$PATH
export LD_LIBRARY_PATH=$QTEDIR/lib:$QT2DIR/lib:$LD_LIBRARY_PATH cd $QTEDIR/examples/launcher
qvfb -width 640 -height 480 &
sleep 10
./launcher -qws
二Qt/E 的交叉编译
要将我们写好的程序发布到开发板上,我们需要对Qt/Embedded 重新编译,与前面在宿主机上编译类似,步骤如下:
一、拍单前清理浏览器 二、只能一个旺旺在线 三、不同地关键字进入 四、尽量要假聊 五、浏览按个人习惯 六、不能使用和自己店铺有关联地单号(同一个网线地) 对刷手地号,要检查一下,尽量不要拍地太多. 以上这几点不知道有没有一些商家注意到!!!!!!!!!!!! 刷它也是根据自己地要求来定:有些小卖家只是为了信誉,刚开始开店没有信誉没有销量,没有办法只能刷. 有些销微好一点地卖家中层次地,会懂得一些刷爆款,关注一两款性价比高地宝贝,人气高地宝贝,去主推这几款.文档收集自网络,仅用于个人学习 比较企业型或者是自产自销地商家,也算是有点钱,会去投资.主要地人气来源做活动.主要是做活动时,要刷一点销量.文档收集自网络,仅用于个人学习 淘宝难做大家都是知道…… …… …… …… …… …… 有些中小卖家也许是不懂,或者也了解一些.知道会降权,降权了删除了就是. 建议在刷上人气地宝贝,或者说是打爆款,或者是做活动,建议您:尽量按以上地要求 刷就是不安全,只能说是在最大地度上,降低安全.只有不刷才是最安全地.刷地本质就是要真实,只有模仿真实地买家去够买,这样才能最安全…………文档收集自网络,仅用于个人学习 淘宝只是用软件来查,而不是人工.记得有一次,有个小二对我说:她也是很无耐,明明知道这个商家是刷地,一看就文档收集自网络,仅用于个人学习 知道了,可是用软件查怎么也查不出来,很无耐.现在关于虚假交易,今年开始已经不在是淘宝网这一边管理,分配到一淘网!淘宝很变态,其实小二们也是很辛苦,也是很无耐.她们也是要经常被大卖家骂,打击,一样很辛苦!文档收集自网络,仅用于个人学习 我知道一两点跟大家透露一下,如果您:两个旺旺在线,其中一个是小号, .机器会判断您是刷地.如果你使用地单号,和自己地店铺有关,或者输入地单号过早,就会因此降权. 再加点建议:尽量假聊哦,要求刷手也不要什么一定要几星以上,或者货比三家,怎么浏览…….让拍手们自己按平时个人习惯去浏览.让每一个拍手进入店铺地关键字尽量不一样.不可能个中有文档收集自网络,仅用于个人学习 个人都是同一个关键词进来,这样 也太不现实了.还有不是每个真实地买家都是用几心以上地号来买,或者说是几钻,也不是每一个买家都是货比三家.尽量做地仿真实,或者没有规律,有规律就不安全了!文档收集自网络,仅用于个人学习 入口点很多,有地买家是从类目进来,也有地是从搜索进来,或者直接进来,淘宝客进来,一些广告地地方进来,可以文档收集自网络,仅用于个人学习 多选择.现在从类目进来地买家也很多,基本上刷地朋友都搜索进来.刷地朋有都是从搜索进来,这也不知道是哪个公会或者团队地要求,简直就是不顾商家地死活…… …… 进来地多了,自然安全率降低. 建议有时候从类目进去,或者其它地入口,这样会更大层度上降低安全…… 如今大量地刷单现象已经成为淘宝上网店主生存地一种普遍生态. 刷单已经成长为利益链条这导致刷单地形式翻新,防不胜防. 市场有专门提供刷单服务地公司,只要店主支付一定地刷单费用就可以操作. 刷单平台还针对商家需求,提供了不同种类地细分产品,例如浏览单、收藏单、押款单、代付单和远程单,浏览单是为了增加浏览量;押款
刷单被抓后我是如何做的 今年我一共在派代线下分享过两场专题课,一场是直通车关键词一夜上10分的专题,那节课是半天时间;另外一场是5月底的SEO专题课,一天时间,内容是8天所有热词上首页和无线搜索流量暴涨的课程,本来我是不想去线下分享的,自己平时太忙,确实没时间,但是派代姜云宝老师和其余的老师都邀请很多次了,没办法。 从派代2007年成立到现在,我是一直随着派代成长的,派代让我学会了很多东西,应派代运营部的邀请,今天我用这篇文章来和大家聊聊2015年的淘宝我们该如何让单品一个月时间从0做到日搜索流量过万。不开车,不上活动,搜索流量过万; 这个店是一个三钻的小C店,6月份开始上款操作的,7月2号的时候单品流量就过一万3了,现在流量还在上升阶段,凉鞋女最大的词基本都排名在无线端第一页了,不过还有优化的空间;现在基本每天稳定在200多单以上了;
废话不多说,直接讲操作步骤; 第一步.准备商品; 准备1个新款(必须是直通车测试出来的好款),5张全网独一无二的主图,第一张主图一定要是高点击率的,做好详情页,上传图片空间,布局好核心词的下架时间,写好标题,放进仓库,等待上架; 如果是老款,可以删除重新来操作,但是必须要删除图片空间的主图好详情页链接,否则不会出现新品标;获取新品标的方法; 1.五张新设计的主图,不可以和老款的主图一样; 2.老款的详情页重新切片,也可以重新排版; 3.删除图片空间的主图链接和详情页链接;重新上传新切片好的详情页; 4.准备一个全新的货号,打印新吊牌; 做好上面,产品上线后24小时之内就会出现新品标了; 第二步.确定产品核心词; 比如我是做女凉鞋的,属性是:坡跟丶厚底;那么我的核心词就是坡跟凉鞋和厚底凉鞋,当然核心词的选择是要根据数据魔方淘词的搜索指数而定,不但要选取搜索指数OK的,而且还要选择精准属性的;淡
组件化通用图形平台EISGraphex 编写:胡剑锋 审核:沈全荣 批准:陈松林 南京南瑞继保电气有限公司 2005年9月
组件化通用图形平台介绍 1.概述 组件化通用图形平台(EISGraphex)是一套图形类应用的支撑平台的核心库,提供对各种类型组件的管理和扩展、各种窗口的管理、消息机制、脚本管理、数据管理等机制,来提供满足有图形界面需求的开发支持,使得图形界面开发的统一性、一致性、扩展性。平台提供一套二次应用建模工具,可用来创建各种图形应用界面的系统,该系统不仅可以绘制一般的画面,还能用来搭建各种形式的窗体应用,如:框架窗体、普通窗体、对话框和弹出菜。 组件化通用图形平台的特点如下: 组件化。该方法保证一切都以组件的形式存在,使用时只要将各种组件组织一番就可搭建形成一个非常漂亮的GUI应用系统,所以系统的使用也因此变得很方便。还有就是组件化方法还有效地增强了功能模块的复用性,应用建模人员只要一次建模,就可以多次使用,大大减少了某些不必要的重复劳动,如:各种图形复合组件等。 二次开发。图形平台是一个开发环境,支持快速开发一个应用系统,提供模型的解释执行和编译执行,便于调试和发布。 可视化。提供可视化方式实现多种窗口建模,数据建模,所见即所得。 较强的可扩展性。可扩展性一方面是指平台的脚本支持功能,应用建模人员可以使用脚本语言任意扩充自己所需要的界面功能。另一方面主要表现在各种组件模型的扩充,尤其是各种应用所需的图形复合组件,用户可以利用平台工具任意创建各种应用性质的复合组件。 跨平台。采用C++和Qt开发,跨Sun Solaris和Windows等主流操作系统 其它优点,如:可靠性好、简单易用等,这里就不一一列出了。 当然,由于平台的定位相对较高,使用该系统需要用户具备一些基本的编程知识和技能,主要在脚本开发和应用接口组件创建时使用。 2.系统总体架构 组件化通用图形平台的主要目的是为各种具体的应用搭建和定制用户界面,支持工程维护人员和最终用户迅速便捷地创建复杂的、强大的、符合自己习惯的操作员界面显示。 组件化通用图形平台是一个建模、组织、运行与图形界面相关的软件系统,包括GUI 应用容器、工具集(数据建模工具、图形组件构建工具、GUI应用界面构建容器)、基本组件库、脚本和应用编程接口等。 构成一个GUI应用的基本实体要素是窗口、组件、公共数据和脚本,而这些要素分别由窗口管理、窗口、数据字典、脚本容器进行管理,这四个部分又可通过数据总线相互发生关系。所有这些元素均包含在GUI应用容器中进行解释运行。 组件包含功能组件、应用接口组件和图形组件。功能组件用于实现某一特定、复杂的功能(如画面编辑组件、报表制作组件、GIS组件等);应用接口组件用于同后台应用系统进行数据通讯、数据类型转换等其他同具体应用关联的功能,应用接口组件主要由GUI应用开发人员通过编写代码实现;图形组件用于表现整个GUI应用的界面。
文档收集于互联网,已重新整理排版.word版本可编辑.欢迎下载支持. 1文档来源为:从网络收集整理.word版本可编辑. 揭开90后创业者面纱:“马佳佳们”靠粉丝经济项目成道具,融资额注水被投资人默许 “粉丝经济”首先要给自己定位,这些定位往往大胆但又贴近需求。马佳佳最初是“卖情趣用品的学霸”、余佳文则是“学渣逆袭成总裁”。 理财周报见习记者王思琪/深圳报道 前不久,90后“霸道总裁”余佳文在公众前的一番豪言壮语让更多人认识到新一代的创业者,风头甚至盖过“国民老公”。他的大胆言论也点燃了公众对于90后创业者的讨论,有人力挺,也有人提出质疑。 无论在何种年代,新一代的创业者总是以果敢的形象出现。而这两年随着互联网高速发展,创业者不仅在数目比以往要增多,对比其他时代创业者也更有年轻化趋势。 与其他年龄层的创业者不同,“初生牛犊不怕虎”的精神在90后中体现得更加淋漓。敢想敢做、特立独行是他们身上特有的特质,这种特质也吸引着越来越多天使投资人的垂青。 无疑,他们生在最好的年代。 在这个时代,创业的苦楚被弱化,创业者不需要为资金殚精竭虑,茶饭不思,一大波的投资人、众筹平台排着队为他们大胆前卫的想法买单,而他们需要做的是提供创意、了解需求。 但在这个过程中,他们也因为过于注重营销而忽略了产品的体验。 对于90后创业者,要学习的不再是在资本面前说故事的能力,而是踏实落实到改进产品中。
资本为创意埋单 无论在哪个年代,胆量以及果敢的决断力都是创业者必备素质。这些对于这群刚踏入社会的90后来说更是与生俱来的特质。 而与其他年代创业者不同的是,身为互联网原住民,90后身上携带的互联网基因是其他时代的人所难以企及的。他们对互联网有更深的理解。很多创业项目都是植根于这批90后日常生活所创造出来的。 文档收集于互联网,已重新整理排版.word版本可编辑.欢迎下载支持. 1文档来源为:从网络收集整理.word版本可编辑. 像易题库与其他校园类的APP,最基础的驱使原因是在生活中碰到一个麻烦,而网站或者应用本身就是通过一系列的代码演算去解决这个麻烦。这样的软件不用宣传也能很快这个群体中得到相当的传播率。 新时代带给90后创业者的除了独特的接受、认识、分析能力之外,在生活态度上也不拘一格,不愿意委屈自己,环境的宽松使他们活得相对自由。很多天使投资人在刚接触时也被他们身上与众不同的个性所吸引,许多投资实例也证明很多时候天使人投资的是创业者,而不仅仅是项目。 在沟通交流上,即便年代不尽相同,大部分天使人与这些创业者都不会有障碍。“我们对于这个团体非常理解,没有一定的理解没办法完成投资。”一名投资人这样说道。 大部分天使投资人对于新生代创业者的个性也很赞同,这些创新的项目虽然处处透着对“权威”的藐视,但是在投资洽谈中,作为创业者与投资人之间的关系是平等的,其中,基本的尊重、认同与理解是必须的。 这种理解与认同往往产生在创业者做到了投资人不敢做甚至是不能想 象的事情上。这点有点类似于“粉丝经济”,而天使投资人本身就是创业
在 Qt 中处理平台相关的底层事件 级别: 中级 涂 波 (tubo@https://www.sodocs.net/doc/2912328246.html, ), 软件开发工程师, IBM 中国软件开发中心 田 晓燕 (tianxyan@https://www.sodocs.net/doc/2912328246.html, ), 软件开发工程师, IBM 中国软件开发中心 路 绪清 (luxuqing@https://www.sodocs.net/doc/2912328246.html, ), 软件开发工程师, IBM 中国软件开发中心 任 谦 (renqian@https://www.sodocs.net/doc/2912328246.html, ), 软件开发工程师, IBM 中国软件开发中心 2007 年 1 月 28 日 事件是由窗口系统或 Qt 本身对各种事务的反应而产生的。 当用户按下一个键或者鼠标按钮,就会相应产生一个键盘或者鼠标事件。 当窗口第一次显示,会产生一个绘图事件,从而通知最新的可见窗口绘制自身。 使用 Qt 编程时,很少需要考虑事件,因为 Qt 的窗口组件会在事件发生的时候发送信号,然后利用 Signal-Slot 机制进行相应的事件处理。 但是,在编写自定义 Widget 或者需要修改现有Widget 的特性时,或者需要处理平台相关的底层事件时,事件则变得很重要。 本文以 XWindow 平台为例,介绍 Qt 如何处理平台相关的底层事件。 1. Qt 中与平台相关的宏定义 Qt 提供了以下标识系统的宏定义,如表1所示: 表 1. Qt 提供的系统标识宏定义 系统标志 对应的平台 Q_WS_WIN Windows Q_WS_X11 XWindow Q_WS_MAC Mac 如果项目中调用了平台相关的 APIs ,那么利用条件编译 ,使得源程序不用修 文档选项 未显示需要 JavaScript 的文档选项
1.QT/Embedded 平台的搭建 在Trolltech 公司的网站上可以下载该公司所提供的Qt/Embedded 的免费版本,本次实验目录下已有要下载的文件,在做实验前把本次实验用到的三个文件拷贝到/root/pxa270Qt 目录下,以下的步骤是假设你在/root/pxa270Qt 下操作的。 1)解压安装包并设置环境变量 1.1安装Tmake 1.2安装Qt 2. 3.2 1.3安装Qt/Embedded 环境变量的设置是非常重要的,它关系到能否正确的安装及编译这些安装包,下面介绍一下这些环境变量: TMAKEDIR :指向用于编译Qt/Embedded 的Tmake 工具 QT2DIR :指向Qt-X11 2.3.2的文件夹 QTEDIR :指向Qt-Embedded 2.3.10的文件夹 2)编译Qt/Embedded 1.1Build Qt2.3.2
./configure 是对Qt 进行配置,它包括很多选项,例如可以通过添加“-no-opengl”等,如果想要进一步了解可以通过键入./configure --help 来获得更多的帮助信息。编译完成后需要将生成的/bin/uic 复制到$QTEDIR 下新创建的目录bin 中,因为在随后编译Qt/Embedded 的时候会用到这个工具。 1.2Build Qvfb 这一步build qvfb 并建立了从Qt/Embedded 2.3.10到Qt 2.3.2的静态库的链接。其中qvfb 工具用来生成Virtual framebuffer,这是一个非常有用的工具,它可以模拟在开发板上的显示情况,如果在Virtual framebuffer 中运行没有问题的话,可以直接通过交叉编译在开发板上运行。 1.3Build Qt/Embedded 在配置./configure 中-qvfb 用来支持Virtual framebuffer,-depths 4,8,16,32支持4位,8位,16位,32位的显示深度,此外还可以添加如-syestem-jpeg 和-gif 来提供对jpeg 和gif 的支持。配置系统同时还支持对特定平台系统选项的添加,但一般来讲,凡是支持framebuffer 的Linux