从3520DV300的资料中找到了Qt4.8.5 的源码。
1 解压,添加脚本makconf:
#!/bin/sh
./configure \
-prefix /usr/local/Trolltech/QtEmbedded-4.8.5-arm \ 这里是源码生成完成后的安装目录
-opensource \
-confirm-license \
-release -shared \
-embedded arm \
-xplatform qws/linux-hi3536v400-g++ \ 这里是在qws目录下建立的一个文件夹
-optimized-qmake \
-pch \
-qt-sql-sqlite \
-qt-libjpeg \
-qt-zlib \
-qt-libpng \
-qt-freetype \
-little-endian -host-little-endian \
-no-qt3support \
-no-libtiff -no-libmng \
-no-opengl \
-no-mmx -no-sse -no-sse2 \
-no-3dnow \
-no-openssl \
-no-webkit \
-no-qvfb \
-no-phonon \
-no-nis \
-no-cups \
-no-glib \
-no-xcursor -no-xfixes -no-xrandr -no-xrender \
-no-separate-debug-info \
-nomake examples -nomake tools -nomake -nodocs \
-depths 15,16,18,24,32 \
-qt-mouse-pc
#-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
#-depths all\
#-fast
执行 ./makconf 如果顺利就可以生成Makefile,然后执行make 就会安装在目录里了。关键没有那么顺利!
进入qws/linux-hi3536v400-g++新建文件qmake.conf
#
# qmake configuration for building with arm-none-linux-gnueabi-g++
#
include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
# modifications to g++.conf
QMAKE_CC = arm-hisiv400-linux-gcc
QMAKE_CXX = arm-hisiv400-linux-g++
QMAKE_LINK = arm-hisiv400-linux-g++
QMAKE_LINK_SHLIB = arm-hisiv400-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-hisiv400-linux-ar cqs
QMAKE_OBJCOPY = arm-hisiv400-linux-objcopy
QMAKE_STRIP = arm-hisiv400-linux-strip
load(qt_config)
在编译前确定环境变量里面有相应的编译器!另一个文件直接复制别的文件夹下就行。
2.make执行过程中 出错主要是编译器版本的替换问题:
find -name 'Makefile' | xargs perl -pi -e 's|arm-hisiv300|arm-hisiv400|g' 将部分Makefile批量替换v300 ->v400
3.make 完成后make install 到此安装完成!
4. 打包所有库:
tar -zcvf QtEmbedded-4.8.5-arm.tar.gz QtEmbedded-4.8.5-arm
5.解压到网络文件系统根目录,挂载到开发板的 /mnt 目录下
此时Qt库目录位于开发板/mnt/QtEmbedded-4.8.5-arm 下
6.设置开发板Qt相关的环境变量
export MOUNT_DIR=/mnt
export QTDIR=$MOUNT_DIR/QtEmbedded-4.8.5-arm
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QWS_KEYBOARD="TTY:/dev/tty1"
export QT_QWS_FONTDIR=$QTDIR/lib/fonts
执行 ./helloworld -qws
在运行Qt之前还要写个程序来设置屏幕:
SAMPLE_HIFB_COMPRESS(void *pData)
/* 2. open compress */
bEnable = HI_FALSE;
s32Ret = ioctl(pstInfo->fd, FBIOPUT_COMPRESSION_HIFB, &bEnable);
if (s32Ret < 0)
{
SAMPLE_PRT("FBIOPUT_COMPRESSION_HIFB failed!\n");
close(pstInfo->fd);
return HI_NULL;
}