使用如下命令config代码,即使加上 -webkit 参数,也无法编译出来:
./configure -v --prefix=/opt/Qtopia4.8.6_mix200/ -prefix-install -no-pch -xplatform qws/linux-arm-himix200-g++ -arch arm -embedded arm -qt-freetype -no-largefile -fast -release -no-qt3support -no-cups -no-opengl -no-phonon -phonon-backend -no-scripttools -no-libtiff -no-gif -no-libmng -no-nis -no-svg -qt-mouse-tslib -qt-gfx-transformed -qt-gfx-linuxfb -webkit
但是同样的配置,海思3536、3536C编译都能正常编译出webkit,甚至不加该参数都可以,但是在海思 3519A 平台始终无法编译出来,为什么呢?
仔细查找 configure 的输出,发现很多 webkit 相关的工程都被 skipping 掉了,WebKit module是no,为什么会被忽略呢?我们已经加上 -webkit 参数了,如何查找问题?
我们使用如下命令查看 configure 脚本:
cat configure
然后在编辑器中查找 webkit 相关配置,看到:
仔细观察发现几个值得注意的地方,一个是默认情况,CFG_WEBKIT 值是auto,最重要的是,它检查了 gcc 编译器版本,会配置 canBuildWebKit=“no”,检测的脚本主要部分如下:
*-g++*)
# Check gcc's version
case "$(${QMAKE_CONF_COMPILER} -dumpversion)" in
4*|3.4*)
;;
3.3*)
canBuildWebKit="no"
;;
*)
canBuildWebKit="no"
canBuildQtXmlPatterns="no"
;;
esac
;;
发现检测到 gcc -dumpversion 版本是 4.、3.4的时候,正常编译,3.3*会做限制,其他情况都直接禁止了 webkit 的编译,我们去看3536、3536C和3519A的gcc版本,发现分别是4.8.3、4.9.4和6.3.0,所以我们发现其他平台都能正常编译,但是3519A平台无法编译出 webkit,为此我们修改 configure 脚本 7733 行,修改为:
4*|3.4*|5*|6*|7*)
让高版本的 gcc 也能编译 webkit,再重新configure、make、make install,WebKit module变成yes,webkit就能正常出来了。
当然,高版本的可能出现 error: ‘std::tr1’ has not been declared 报错,则按 “qt4.8.6交叉编译” 做修改即可。
另见 qt4.8.6交叉编译 : https://blog.csdn.net/yangyang031213/article/details/103720392