QT ARM 移植
1. 安装触摸屏支持库(根据需要,如果需要的话)
tar -xvf tslib1.4.gz
cd tslib
./autogen.sh //生成configure 文件
echo ac_cv_func_malloc_0_nonnull=yes>arm-linux.cache //指定缓冲配置的文件
export PATH=/usr/local/arm/4.3.2/bin:$PATH
./configure --host=arm-linux --prefix=/usr/local/tslib --cache-file=arm-linux.cache --enable-inputapi=no
参数解析:配置目标机、缓冲、安装路径
--cache-file=FILE cache test results in FILE [disabled]
make
make install //会生成目录/usr/local/tslib
2. 安装ARM 的QT
针对QT-4.6.3的话
修改qt-everywhere-opensource-src-4.6.3/src/gui/embedded/qscreenlinuxfb_qws.cpp源码:
424行左右的地方:
/* //EmbedSky_del start 20091208
canaccel = useOffscreen();
if(canaccel)
setupOffScreen();
*/ //EmbedSky_del end 20091208
canaccel = false;
726行左右的地方:
/* //EmbedSky_del start 20091208
if (canaccel) {
*entryp=0;
*lowest = mapsize;
insert_entry(*entryp, *lowest, *lowest); // dummy entry to mark start
}
*/ //EmbedSky_del end 20091208
canaccel = false;
原因: QT 对图形的支持不好,framebuf 的缓冲区有点问题
3. 配置编译选项
./configure -prefix /usr/local/Trolltech/QtEmbedded-4.6.3-arm -release -opensource -shared -fast -no-largefile -qt-sql-sqlite -no-qt3support -no-xmlpatterns -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -no-webkit -qt-zlib -qt-gif -qt-libtiff -qt-libpng -qt-libjpeg -qt-libmng -make libs -no-nis -no-cups -no-iconv -no-dbus -no-openssl -xplatform qws/linux-arm-g++ -embedded arm -little-endian -qt-freetype -depths 16,18 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-glib -qt-mouse-tslib -qt-mouse-pc -I/usr/local/tslib/include -L/usr/local/tslib/lib
参数解析:
-prefix #安装路径
-release #编译成发布版本
-opensource #开源代码
-shared #编译成共享库
-fast #Configure Qt quickly by generating Makefiles
-no-largefile #Enables Qt to access files larger than 4 GB.
-qt-sql-sqlite #Enable a SQL sqlite
-no-qt3support #不支持QT3库
-no-xmlpatterns #不需要XmlPattern模块,如果对网络无需求的话,就不用加了。
-no-mmx #不支持多媒体增强指令
-no-3dnow #不支持3DNOW instructions
-no-sse #不支持SSE instructions.
-no-sse2 #不支持SSE2 instructions.
-no-svg #Do not build the SVG module.
-no-webkit #WebKit 一种网页浏览器引擎
-qt-zlib #使用zlib绑定到qt. zlib是一套通用目的的压缩库
-qt-gif #Compile the plugin for GIF reading support.
-qt-libtiff #编译tiff支持插件.TIFF:(Tagged Information File Format) 是一个不失真的24-bit 彩色图像格式
-qt-libpng
-qt-libjpeg
// -qt-libmng #编译MNG图形文件支持插件.
-make libs #在make的时候,加入组件libs到组件列表中,以便于进行build构建。
// -nomake examples ??
// -nomake docs ??
// -nomake demo ??
-no-nis #NIS:Network Information Service
-no-cups #CUPS给Unix/Linux用户提供了一种可靠有效的方法来管理打印。
-no-iconv #iconv是一个计算机程序以及一套应用程序编程接口的名称。它的作用是在多种国际编码格式之间进行文本内码的转换
-no-dbus #QtDBus:进程通信的一个方法
-no-openssl #Security Socket Layer,是一个安全传输协议,在Internet网上进行数据保护和身份确认
-xplatform qws/linux-arm-g++ #交叉编译的目标平台,一般来说根据你所要移植的目标板来确定。
-embedded arm #架构
-little-endian
-qt-freetype #自由使用版
-depths 16,18 #显示的像素位深,也是根据需要来进行。
-qt-gfx-linuxfb
-qt-gfx-transformed
-qt-gfx-multiscreen
-no-gfx-vnc
-no-gfx-qvfb
-qt-kbd-linuxinput
-no-glib
-qt-mouse-tslib #选择触摸屏驱动支持
// -qt-mouse-pc #支持鼠标
-I/usr/local/tslib/include #新增include路径。
-L/usr/local/tslib/lib #新增库文件路径。
make(make的时候可做三、五、六、七步)
make install
1)、(安装完后检查/usr/local/Trolltech/QtEmbedded-4.6.3-arm有没有demos
有的话即成功做第四步,然后source /etc/profile ,最后直接第八步。over了)
2)、没有的话,//make clean
./configure -opensource -embedded arm -xplatform qws/linux-arm-g++ -no-webkit -qt-libtiff -qt-libmng -qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp -I /usr/local/tslib/include -L /usr/local/tslib/lib
参数解析:
-opensource #开源代码
-embedded arm #嵌入式平台架构选择,可以选择arm,mips,x86及generic
-xplatform qws/linux-arm-g++ #交叉编译的目标平台,一般来说根据你所要移植的目标板来确定。
-no-webkit #WebKit 一种网页浏览器引擎
-qt-libtiff #编译tiff支持插件.TIFF:(Tagged Information File Format) 是一个不失真的24-bit 彩色图像格式
-qt-libmng #编译MNG图形文件支持插件.
-qt-mouse-tslib #选择触摸屏驱动支持
-qt-mouse-pc #支持鼠标
-no-mouse-linuxtp ##不支持linuxtp触摸屏协议
-I /usr/local/tslib/include #新增include路径。
-L /usr/local/tslib/lib #新增库文件路径。
make
make install
此时完后再检查/usr/local/Trolltech/QtEmbedded-4.6.3-arm有没有demos
有的话即成功做第四步,然后source /etc/profile ,最后直接第八步。over了)
三 配置环境变量
//修改/etc/profile
#for arm /etc/profile
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6.3-arm
export PATH=$QTDIR/bin:/usr/local/arm/4.3.2/bin:$PATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QMAKESPEC=$QTDIR/mkspecs/qws/linux-arm-g++
四 拷贝QT库
cd arm-qte-4.6.3
./mktarget //用来拷贝库的脚本
cp target-qte-4.6.3.tgz /root/build_rootfs/rootfs/
cd /root/build_rootfs/rootfs/
tar -xvf target-qte-4.6.3.tgz //会把库解压到目录/root/build_rootfs/rootfs/usr/local/Trolltech/QtEmbedded-4.6.3-arm
注意:安装的在什么路径,这边就拷贝到文件系统的什么路径
把usr/local/Trolltech/QtEmbedded-4.6.3-arm整个目录拷贝到/root/build_rootfs/rootfs/usr/local/Trolltech/QtEmbedded-4.6.3-arm
注意:安装的在什么路径,这边就拷贝到文件系统的什么路径
五 另拷备三个库,后QT可显示,但触摸屏无效
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libstdc++* /root/build_rootfs/rootfs/lib/ -a
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libts* /root/build_rootfs/rootfs/lib/ -a
cp /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib/libpng* /root/build_rootfs/rootfs/lib/ -a
六 安装触摸屏驱动
cp /usr/local/tslib /root/build_rootfs/rootfs/usr/local/ -r -a
修改ts.conf文件,应该在$TSLIB_ROOT/etc/ts.conf 把module_raw input的#去掉
七 在/root/build_rootfs/rootfs/etc/profile文件中添加:
cd /dev/
mkdir input #核心输入设备目录
chmod 777 input
cd input/
mknod /dev/input/event0 c 13 64 #支持触摸屏,事件处理 第1个事件队列--触摸屏设备文件名
mknod /dev/input/mice c 13 63 #支持鼠标,鼠标的节点
chmod 660 /dev/input/*
cd /
#为了实现Tslib 的正确运行,需要对如下的Tslib 的环境变量进行配置:
#在/root/build_rootfs/rootfs/etc/profile文件中添加
export TSLIB_ROOT=/usr/local/tslib
export TSLIB_TSDEVICE=/dev/input/event0 #触摸屏设备文件名
export TSLIB_CALIBFILE=/etc/pointercal #校准的数据文件,由ts_calibrate 校准程序生成
export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf #配置文件名
export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts #插件目录
export TSLIB_CONSOLEDEVICE=none #控制台设备文件名
export TSLIB_FBDEVICE=/dev/fb0 #FB设备名
export LD_LIBRARY_PATH=/usr/local/tslib/lib:$LD_LIBRARY_PATH
export QTDIR=/usr/local/Trolltech/QtEmbedded-4.6.3-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export PATH=$QTDIR/bin:$PATH
export QWS_MOUSE_PROTO=tslib:/dev/input/event0 #触摸屏设备文件名
八 执行触摸屏校正
/usr/local/tslib/bin/ts_calibrate
(如果出现触摸屏触点不对准时,可在平台的/etc目录下添加文件pointercal,内容如下:)
71 -19602 17782628 25901 357 -2661832 65536
九 ./age -qws -fn unifont
-qws 嵌入式的QT 都需要有个服务器,把它当做服务器使用
-fn unifont 指定字体的格式
QT编译:
qmake -project//创建工程
qmake//产生makefile
make clean//
make//当前目录下会生成与文件名同名的可执行文件,如果报QTest之类的错误,就在pro文件上加上
//QT += network//网络
//QT += testlib//QTest
如果Ubuntu 内存空间不够,需要扩展硬盘,参考如下
https://blog.csdn.net/weixin_39510813/article/details/78387334