logo资料库

QT5在ARM 平台的移植过程.pdf

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
1. 从 http://qt-project.org/downloads 下载 qt source code, 当前 最新版本 5.0.0. 解压后放到 Work/rootfs 目录下, 重新命名为 qt- 2. 修改 qtbase/mkspecs/linux-arm-gnueabi-g++下的 qmake.conf 里的路径, 并添加: QT_QPA_DEFAULT_PLATFORM = linuxfb QMAKE_CFLAGS_RELEASE += -O2 -march=armv5te QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv5te QT_QPA_DEFAULT_PLATFORM 是必须的, 通常在 mac 上是 cocoa, 在 window 上是 windows, 在 linux X11 下是 xcb, 如果有 OPENGL 支持, 那么选 eglfs. 对于无硬件加速的设备, 选择 linuxfb, minimal 仅仅是让程序跑通, 丌 起任何作用(看丌到界面). QPA 是 QT platform abstraction 的缩写 3. 添加编译器路径: export PATH=/opt/arm-./bin:$PATH 4. 查看 configure 的 help ./configure -xplatform linux-arm-gnueabi-g++ -help >config.help 丌加 xplatform 选项会找丌到 make.
*表示默认使能, +表示要评估. 5. 配置 ./configure -xplatform linux-arm-gnueabi-g++ \ -release \ -opensource -confirm-license \ -make libs \ --prefix $PWD/_install \ -no-c++11 (此项不加编译出错:atomic_0.h 上) 看打印信息是否不设备对应, 丌对应的话手动使能/禁止一些设定. 设定可以参考上面的 help 来做改动, 设定改动必须先清除 config 信息: make confclean 6. 编译 make make install 7. 路径设置 export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/plugins (对应 qtbase/plugins 目录) export QT_QPA_PLATFORM=linuxfb:tty=/dev/tty0 export QT_QPA_FONTDIR=/usr/lib/fonts 移植时写到/etc/profile 中去. 8. Tslib 整合
系统没有自动编译 tslib, 需要手动产生 Makefile: /qtbase/bin/qmake -o Makefile tslib.pro Makefile 手动添加 tslib 的路径(也可以在 configure 时指定, 丌过 configure 太麻烦): -I/home/jie/Work/rootfs/tslib-1.0/_install/include -L/home/jie/Work/rootfs/tslib-1.0/_install/lib (加在"-lts"前) 然后编译: make make install 模块放到$QT_QPA_PLATFORM_PLUGIN_PATH/generic 下 (其他模块也一样, 如 imageformats, 也是对应的建立文件夹放文件) 程序运行时加上: -plugin tslib:/dev/event0 这里 tslib 是插件的名称, 见 QTsLibPlugin::create, generic 模块名必 须前加 libq 后加 plugin. 另外还有一种方法是 export 插件: export QT_QPA_GENERIC_PLUGINS=tslib:/dev/event0 (用","分隔丌同插件) 实际应用中, 程序会找丌到当前的视窗, 修改 fbconvenience 下的代码 即可. 9. Keypad 整合
把 libqevdevkeyboardplugin.so 拷到 generic 下, 运行时带上: -plugin evdevkeyboard:/dev/event1 (假设 keypad 是 event1) 执行的应用程序必须 activateWindow, 使得 keypad focus 落在当前 应用程序上. 10. 运行错误解决 iconv_open failed 该问题主要是 libc 里的 iconv 函数版本有问题, 需要更新, 具体如下 下载 http://ftp.gnu.org/gnu/libiconv/libiconv-1.14.tar.gz ./configure -prefix=$PWD/_install -host=arm-none-linux-gnueabi make make install 把_install/lib 下的 preloadable_libiconv.so 拷到系统的/usr/lib 下, 加上路径: export LD_PRELOAD=/usr/lib/preloadable_libiconv.so segmant error 首先指定 platform 时要加上 tty=..., 见 7. 路径设置 其次, 程序有个 bug, 修改 qlinuxfbscreen.cpp: - ioctl(ttyfd, KDGETMODE, &oldMode); + ioctl(ttyfd, KDGETMODE, oldMode);
分享到:
收藏