前期工作:触摸屏stlib-master移植
tar xzvf qt-everywhere-opensource-src-4.8.3.tar.gz -C ../006.qt/
解压3份(分别是PC本机/ARM体系/X86体系):
qiuweibo@ME-BS1:~/workspace/003.aPM.MPU/006.qt/002.source$ ls
qt-4.8.3-arm qt-4.8.3-pc qt-4.8.3-x86
1.编译PC版本:
./configure -prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_pc
make
make install
-prefix后面的是安装目录,根据需要修改。
错误1:
The specified system/compiler is not supported:
解决措施:
得知看下环境变量,于是乎,终端输入export,终于明白是哪里出错了:
QMAKESPEC=/xxx/xxxx/xxx/xxx这个环境变量指定的目录根本就不是我的qt源码所在的目录,就重新设一下该环境变量:
export QMAKESPEC=/home/qiuweibo/workspace/003.aPM.MPU/006.qt/002.source/qt-4.8.3-pc/mkspecs/linux-g++
重新./configure 指定目录,OK!
2.进入qt-4.8.3-x86目录
输入编译嵌入式Qt库配置命令,并且进安装
-
./configure -prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_pc
-
make
-
make install
-
./configure -prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_pc
-
make
-
make install
-
./configure -prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_pc
-
make
-
make install
-
./configure -prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_pc
-
make
-
make install
make && make install
安装下来的嵌入式Qt包大概有2.8G,Qt库大概是接近1G。
3.编译嵌入式版本
进入qt-4.8.3-arm目录,输入编译嵌入式Qt库配置命令,并且进安装
1.修改环境变量
export QMAKESPEC=/home/qiuweibo/workspace/003.aPM.MPU/006.qt/002.source/qt-4.8.3-arm/mkspecs/linux-g++
2.指定交叉编译器:
cp -fr mkspecs/qws/linux-arm-g++ mkspecs/qws/linux-am335x-g++
vi mkspecs/qws/linux-am335x-g++/qmake.conf
编辑qmak.conf ,将“arm-linux ” 更改为
"arm-linux-gnueabihf“,并增加参数“lts ”
到四个选项,如下所示:
$ cat qmake.conf
#
# qmake configuration for building with arm-linux-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 = arm-linux-gnueabihf-gcc -lts
QMAKE_CXX = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK = arm-linux-gnueabihf-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-gnueabihf-g++ -lts
# modifications to linux.conf
QMAKE_AR = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY = arm-linux-gnueabihf-objcopy
QMAKE_STRIP = arm-linux-gnueabihf-strip
load(qt_config)
3.建立shell配置脚本如下:
具体参数,查看./configure -help
$ cat do_config
#!/bin/bash
# Add by QWB
./configure\
-qtlibinfix E\
-prefix /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_arm\
-opensource\
-confirm-license\
-embedded arm\
-xplatform qws/linux-am335x-g++\
-little-endian\
-host-little-endian\
-fast\
-shared\
-no-qt3support\
-no-phonon -no-phonon-backend\
-qt-zlib\
-no-gif\
-no-libtiff\
-no-qvfb\
-qt-libjpeg\
-no-nis\
-no-opengl\
-no-cups\
-no-webkit\
-no-glib\
-no-dbus\
-no-rpath\
-no-mmx -no-3dnow\
-no-sse -no-sse2 -no-sse3 -no-ssse3 -no-sse4.1 -no-sse4.2\
-no-avx -no-neon\
-no-audio-backend\
-no-svg\
-no-javascript-jit\
-no-script\
-no-scripttools\
-no-multimedia\
-no-openssl\
-nomake tools\
-qt-mouse-tslib\
-I/home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/tslib/include\
-L/home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/tslib/lib
-
sh do_config
-
make
-
make install
-qtlibinfix Renames all libQt*.so to libQt*.so.
至此,编译已完成,剩下就是移植到开发板和配置环境变量
$ du -sh *
76M install_arm
399M install_pc
141M install_x86
360K tslib
4.完成编译和安装后需要对系统(PC)的环境变量进行设置,才能编译自己的程序
vim setARMenv.sh
#!/bin/sh
export QTEDIR=/home/liuc/qtenv/qt-4.8.2-arm:$QTEDIR
export PATH=/home/liuc/qtenv/qt-4.8.2-arm/bin:$PATH
export LD_LIBRARY_PATH=/home/liuc/qtenv/qt-4.8.2-arm/lib: LD_LIBRARY_PATH
注意:以上目录是你安装 qt 库的路径。
5.移植库到开发板
1 )虚拟机里编译安装 arm 版的 Qt库在你的安装目录下,如:
/home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/install_arm/lib 下,在install_arm/目录执行下面的命令打包,方便以后移植使用
tar zcvf lib.tar.gz lib/
2 )移植到开发板
最好是跟你在虚拟机里面的 arm 版Qt 所在目录一样,方便操作!
在开发板下新建目录: /opt/Qt
把lib.tar.gz 解压到此目录, lib 目录下包含库和字体。
2. 安装成功后,这步非常关键,一定要设置环境变量
在开发板的根目录下执行:
$ vi /etc/profile
然后输入
# Add by QWB 2014.5.20 for QT Start
export QTDIR=/opt/Qt:$QTDIR
export LD_LIBRARY_PATH=/opt/Qt/lib:$LD_LIBRARY_PATH
export QT_QWS_FONTDIR=/opt/Qt/lib/fonts
# Add by QWB 2014.5.20 for QT End
保存退出 !
3. 准备 tslib 文件 ,使触摸屏工作
把虚拟机 /home/qiuweibo/workspace/003.aPM.MPU/006.qt/001.install/tslib 目录下的文件拷贝到开发板上的/home/liuc/qtenv/tslib ,没有的话自己建个文件。
修改触摸屏配置文件
3.1环境变量
为了实现 Tslib 的正确运行,需要对如下的 Tslib 的环境变量进行配置:
设置环境变量如下:(或者写成 shell 形式)
# Add by QWB 2014.5.20 for Tslib Start
export T_ROOT=/opt/tslib/
export LD_LIBRARY_PATH=/opt/tslib/lib:$LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR=$T_ROOT/lib/ts
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf
export POINTERCAL_FILE=/etc/pointercal
export TSLIB_CALIBFILE=/etc/pointercal
#umount follow support touchscreen
#export QWS_MOUSE_PROTO=tslib:/dev/input/event0
#umount follow support mouse
#export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice
#umoun tfollow support both touchscreen and mouse
export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mice"
# Add by QWB 2014.5.20 for Tslib End
或者也写在/etc/profile 里面.
3.2
(1)支持触摸屏
在对触摸屏校准以后,可以执行以下命令来支持触摸屏:
export QWS_MOUSE_PROTO=Tslib:/dev/input/event0
(2)支持鼠标
export QWS_MOUSE_PROTO=MouseMan:/dev/input/mice
(3)同时支持触摸屏和鼠标
export set QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mice"
然后执行测试程序 ./am3359 -qws
就可以看到Qt界面出现了
运行程序
./Monitor -qws
原来Qt的运行需要有一个Qt的服务进程,添加-qws后就是把当前Qt程序当作server了
查看程序所需动态库如下:
$ arm-linux-gnueabihf-readelf -a mainwindow |grep "Share"
将程序与库文件与下载到开发板,设置开发板的环境变量