文档库 最新最全的文档下载
当前位置:文档库 › qt5移植到ARM平台的记录

qt5移植到ARM平台的记录

qt5移植到ARM平台的记录
qt5移植到ARM平台的记录

1.从https://www.wendangku.net/doc/f87879032.html,/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函数版本有问题, 需要更新, 具体如下下载https://www.wendangku.net/doc/f87879032.html,/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);

相关文档