最近交叉编译了一版qt-embedded,过程以及遇到问题解决方案现贴出来共享一二,欢迎讨论。
到trolltech官方网站下载qt-embedded;
确认tool chain可用;
解压tarball后,根据你自己的硬件平台,修改或者增加gfx, mouse, kbd支持;
src/plugins/gfxdrivers/
src/plugins/mousedrivers/
src/plugins/kbddrivers/
mkdir build-target
cd build-target
../qt-embedded-linux-opensource-src-4.4.3/configure -embedded arm -webkit -qt-gfx-xxx -plugin-gfx-xxx -qt-kbd-xxx -plugin-kbd-xxx -qt-mouse-xxx -plugin-mouse-xxx -optimized-qmake -release -xplatform qws/linux-arm-g++
make
make install
(xxx为硬件平台上的驱动的名称)
遇到几个问题:
在加上cups时,发现编译这个会被configure挡掉,在configure文件里拿掉一些挡掉的语句,发现编译不过,这个时候想起需要事先编译好目标平台的cups库。
安装会将qt编译工具,库,头文件,specs文件等拷贝到/usr/local/Trolltech/QtEmbedded-4.4.3-arm/,当然,你也可以在配置时指定安装路径,否则...
这个时候用/usr/local/Trolltech/QtEmbedded-4.4.3-arm/bin/qmake来为一个demo生成Makefile,打开Makefile一看,发现CC=gcc而不是arm-linux-gcc,这就郁闷了,检查一下PATH,发现arm的toolchain赫然在列,看来问题和toolchain没有关系,出在qmake身上
用这个看一下/usr/local/Trolltech/QtEmbedded-4.4.3-arm/bin/qmake -help,发现有个spec的东东,这个会给目标平台指定一些东东,到/usr/local/Trolltech/QtEmbedded-4.4.3-arm下一看,
ls mkspecs/default -l
mkspecs/default -> qws/linux-arm-g++
没有错阿,难道qmake的源代码有问题?
打开qmake的源代码,看了一半,想了一下,还是去mkspecs目录下试个究竟,将这个目录下的除了common default features qconfig.pri qws其余的删了个遍,然后去重新qmake那个demo,呵呵,这下qmake没有成功,提示说QMAKESPEC(linux-g++)没有找到,晕哦,default不是指向qws/linux-arm-g++吗?除非......对了,环境变量
env一下
果然, QMAKESPEC=linux-g++赫然在列
问题应该是我以前安装的qt定义了这个环境变量,而这里编译出来的qmake也引用了。改掉定义环境变量的地方,发现这次对了,搞定...差点走了弯路,跑去死磕qmake的源代码...
其实qmake -spec default也可以解决问题 (因为mkspecs/default -> qws/linux-arm-g++)
阅读(4527) | 评论(6) | 转发(0) |