移植QT4.8.7
之前移植了QT5.9.1,这里移植QT4.8.7就简单介绍下
一、下载QT4.8.7#
一般来说,我们需要编译主机和目标板两个版本的qt:
主机版可以用于前期的gui的设计调试;目标板用于实际产品的验证。
二、编译X11版本#
主机版一般是X11,配置如下:
安装完成后在 /opt/qt-4.8.7-x11 下可见安装的文件。
三、交叉编译arm版本#
注意,在第二次编译前,先 make clean
下。如果编译时候仍有错误,可以重新解压编译。
交叉编译,需要配置
xplatform选项,比如要在arm-linux平台上移植Qt的话,就在配置项中加上
-xplatform linux-arm-gnueabi-g++
,这个是平台名字,Qt5支持的交叉平台都可在源码顶层目录中的 mkspecs/
下找到。
首先我们需要编辑 mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf :
加上:(注意,和tslib类似,这里要加上其它什么支持的话,也是交叉编译的库的路径)
把 arm-linux-gnueabihf-gcc 改成 arm-linux-gnueabi-gcc 等。
然后再编辑配置脚本cfg_arm.sh
完成后,相关文件在 /opt/qt4.8.7-arm 下。
四、常见编译错误#
配置QT的时候,如果指定了-webkit,编译的时候会报错:
../3rdpartyjavascriptcoreJavaScriptCore/wtf/TypeTraits.h:173:69:error: 'std::tr1' has not been declared
解决方法:
- 修改QT源码目录下mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf文件,加上一行:QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -std=gnu++98
>>>
/opt/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/6.3.1/../../../../arm-linux-gnueabihf/bin/ld:
warning: libts.so.0, needed by
/home/wcz/qt-everywhere-opensource-src-4.8.7_arm/lib/libQtGui.so, not
found (try using -rpath or -rpath-link)
提示没有tslib的库,当然了,提示中也清楚的说了(try using -rpath or
-rpath-link)。
我们可以:
- 进入到编译报错的目录,在这里是“examples/network/broadcastreceiver“
- 修改这个目录中的Makefile文件,找到LFLAGS一行,在最后面加上”-Wl,-rpath,/opt/tslib/lib“,也就是手动指定tslib的目录。(这里还没清楚为何configure时的参数没起作用)
- 就地make
- 退回到主目录
- 继续make
上面的操作,如果每个Makefile都要编辑一遍的话,那就太麻烦了,我们偷偷懒。
针对Makefile的LFLAGS一行的特点,我们使用 find、grep、awk、sed、xargs
来完成这个操作,如下:
进入到出错目录的顶层,如上示例,我们进入到examples。
<注意,这个命令会直接修改目录中最底层的每一个Makefile,请试验成功后再使用.>
五、向开发板添加Qt库#
首先将 /opt/qt5.9.1-arm和/opt/tslib 复制到开发板的对应目录下
然后设置开发板 Qt 环境变量, vi /etc/bash.bashrc
添加下面内容:
保存后生效上述内容: source /etc/bash.bashrc
br生成的文件系统则为:
Related Issues not found
Please login GitHub to create issue