PC版本
在终端中输入:
sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4-designer qt4-qmlviewer
◆qt4-dev-tools 中包括了Qt Assistant,Qt Linguist,Qt Creator
◆qt4-doc 这个是帮助文档
◆qt4-qtconfig Qt的配置工具,这个装好默认好
◆qt4-demos 官方的一些Demo
◆qt4-designer 可视化窗体设置工具
◆qt4-qmlviewer 和qtcreator相关
安装后,没有安装Qt Creator,在Ubuntu 图形桌面上点击左侧的Ubuntu Software Center,搜索Qt ,选择Qt Creator。
完成后,在terminal命令行执行命令 qtcreator启动Qt Creator了。
注:如果需要编译特定版本的,如4.8.5,则:
(1) 安装一些依赖包
sudo apt-get install libX11-dev libXext-dev libXtst-dev
(2) 下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz,解压后进入目录 用命令
sudo ./configure -prefix /usr/local/Trolltech/Qt-4.8.5
sudo make
sudo make install
即可
ARM版本
一、下载Qt源码包 qt-everywhere-opensource-src-4.8.5.tar.gz;
二、 解压后进入该文件夹,执行
./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -fast -lrt
三、 执行make,及make install命令,一般时间比较长;
四、 完成后修改mkspecs文件的权限,供qt creator使用: sudo chmod 775 mkspecs -R;
五、 配置qt creator:工具->选项->Qt4 找到“手动设置”增加一个,qmake路径填第二步中的安装目录下的qmake路径,”usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake“;
六、配置完成后,打开项目后点左侧“项目”,选择刚才配置的Qt版本即可编译生成arm版程序了。
注:以上所使用的交叉编译工具为arm-none-linux-gnueabi 如果使用arm-linux 做相应的修改即可
移植到ARM
一、需要将usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib移植到ARM板上相同的位置,将plugins里的.so也移入..../QtEmbedded-4.8.5-arm/lib;
二、 对一、中的lib/下的.so做链接
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4
ln -s libQtDeclarative.so.4.8.5 libQtDeclarative.so.4.8
ln -s libQtGui.so.4.8.5 libQtGui.so
ln -s libQtGui.so.4.8.5 libQtGui.so.4
ln -s libQtGui.so.4.8.5 libQtGui.so.4.8
......
注:一、二、 也可以用压缩打包整个lib,拷贝过去来实现。
三、vi ~/.bashrc 文件,加入
QTDIR=usr/local/Trolltech/QtEmbedded-4.8.5-arm
export QTDIR
PATH=$QTDIR/lib:$PATH
export PATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
加入触摸屏支持
一、触屏库tslib的编译
(1) 下载相应的工具
sudo apt-get install automake
sudo apt-get install autogen
sudo apt-get install autoconf
sudo apt-get install libtool
(2) 很重要的一步,设置 CC和CXX
export CC=.... ,export CXX=...,一般CC=arm-linux-gcc ,CXX=arm-linux-g++,我的交叉编译环境是arm-none-linux-gnueabi-gcc,arm-none-linux-gnueabi-g++,输入命令 export CC=arm-none-linux-gnueabi-gcc export CXX=arm-none-linux-gnueabi-g++
(3) 编译
cd tslib
./autogen.sh
echo "ac_cv_func_malloc_0_nonnull=yes" > arm-none-linux-gnueabi.cache #(这样做到目的是避免出现undefined reference to rpl_malloc错误)
./configure --host=arm-none-linux-gnueabi CC=<你的cc编译器所在路径> CXX=<你的++编译器所在路径> --cache-file=arm-none-linux-gnueabi.cache -prefix=/usr/local/tslib
make
make install
(4) 检查
可进入/usr/local/tslib/bin 里,file ts_test(或其他文件) 如果显示ARM,表明编译正确,如果显示80386表明你用的不是交叉编译器,而是系统的gcc。 注:因为版本不一致,导致编译QT时一直出现 fail to find tslib function...,加入-verbose选项,打印出/opt/../ld:cannot find -lts(tslib和qt编译器版本不对应造成)。
二、 编译QTe 4.8.5
(1) 编译指令需要改为
./configure -opensource -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -no-webkit -qt-libtiff -qt-libmng -qt-libjpeg -qt-libpng -no-qt3support -nomake demos -nomake docs -nomake examples -little-endian -host-little-endian -no-xcursor -no-mouse-linuxtp -qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib -fast -lrt
不需要鼠标的话就加上-no-xcursor -no-mouse-linuxtp,并且修改./src/gui/embedded/qwscursor_qws.h,在文件头部加上#define QT_NO_QWS_CURSOR;
(2) 编译器最好在qws/linux-arm-gnueabi-g++/qmake.conf中指定完全的路径,否则可能出现一些奇怪的错误;
(3) qmake.conf中记得加入-lts 在g++ gcc后面。
三、 移植到开发板
如果开发板中没有tslib库,则需要进行移植
(1) 将tslib库拷到开发板 /usr/local/tslib;
(2) 修改ts.conf
vi /usr/local/tslib/etc/ts.conf,将#module_raw input前的#去掉。
(3) vi /etc/profile 添加:
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event1
export QWS_MOUSE_PROTO=tslib:/dev/input/event1
export TSLIB_CALIBFILE=/etc/pointercal
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_CONSOLEDEVICE=none #避免出现“open console device: No such file or directory KDSETMODE: Bad file descriptor”的错误
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
TSLIB_TSDEVICE 和QWS_MOUSE_PROTO这两项需要查看自己的板子的触摸屏设备对应/dev/input/下哪个文件,可用cat /proc/bus/input/devices查看。
一些常见错误
一、 QMAKESPEC has not been set,解决方案:sudo gedit ~/.bashrc ,添加内容:export QMAKESPEC=usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/qws/linux-arm-gnueabi-g++。
二、 安装了多种版本的QT,如果想默认使用QtEmbeddedb版本,可以在上述文件中加入:export PATH=/usr/local/Trolltech/QtEmbedded-4.5.2-arm/bin:$PATH。
三、 配置完成后,可使用qmake -project;qmake;make进行工程编译。
四、 arm开发板的终端打不开,出现"grantpt failed:..."问题,可以输入:mount -o remount,gid=5,mode=620 /dev/pts 回车。
五、 Qtcreator配置出现,没有编译链,则可加入GCCE编译链,目标位置就是linux-none-arm-guneabi-g++所在位置。
六、 出现qmlviewer 没有安装的问题,可从/usr/bin里将qml开头的三个可执行文件拷到usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin下。
七、 make 出现arm-none-linux-gnueabi-g++命令未找到,如果确定环境变量已经添加,则检查文件所属账号是不是你现在账户;环境变量如果一直不对,可以关掉终端,新开一个,重新设置。
八、 如果开发板运行程序的时候出现 cannot mix incompatible Qt library with this library,查找资料,大家都说最可行性的解决方案是卸干净,重新编译,自己花了好长时间重新编译后,发现还是一样。然后用ldd