环境:UBUNTU 10.04LTS, GCC 4.4.1, uClibc, QT SDK 4.8.5
2、先编译PC端的,
1) 解压出来,重命名文件夹为: x86-qt-everywhere-opensource-src-4.8.5
2) 进入到x86-qt-everywhere-opensource-src-4.8.5目录
3) 配置: ./configure
出现错误: Basic XLib functionality test failed! You might need to modify the include and library search paths by editing QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/cjh/qt/qt-everywhere-opensource-src-4.8.5/mkspecs/linux-g++. 安装libxtst-dev:apt-get install libxtst-dev ./configure 出现:Warning: -no-xrender will disable the QtWebkit module. 安装libxrender-dev:apt-get install libxrender-dev ./ configure 如需重新配置,To reconfigure, run 'make confclean' and 'configure'. |
4) make,没出现什么问题,花了二三个小时完成。
5) sudo make install 默认装在:/usr/local/Trolltech/Qt-4.8.5
3、编译ARM端
1) 安装交叉编译器
安装海思平台交叉编译器arm-hisiv100-linux
安装目录是/opt/hisi-linux/x86-arm/arm-hisiv100-linux
在/etc/profile文件中添加PATH
Export PATH="/opt/hisi-linux/x86-arm/arm-hisiv100-linux/target/bin:$PATH"
确认编译器安装成功,arm-hisiv100-linux-gcc -v
2) 从压缩包再解压出来,重命名文件夹为: arm-qt-everywhere-opensource-src-4.8.5。虽然与PC端是相同的代码,按理说在同一个文件夹用不同的配置也可以,但为了避免问题,还是另建一份新的档案。而且也可以同时make,节省时间。
3) 进入到arm-qt-everywhere-opensource-src-4.8.5目录
4) 设置交叉编译工具链,修改文件qmake.conf arm-qt-everywhere-opensource-src-4.8.5/mkspecs/linux-arm-gnueabi-g++ /qmake.conf,修改内容如下:
# modifications to g++.conf
QMAKE_CC = arm-hisiv100-linux-gcc
QMAKE_CXX = arm-hisiv100-linux-g++
QMAKE_LINK = arm-hisiv100-linux-g++
QMAKE_LINK_SHLIB = arm-hisiv100-linux-g++
# modifications to linux.conf
QMAKE_AR = arm-hisiv100-linux-ar cqs
QMAKE_OBJCOPY = arm-hisiv100-linux-objcopy
QMAKE_STRIP = arm-hisiv100-linux-strip
5) 配置:
./configure -opensource -embedded arm -host-little-endian -little-endian -static -no-cups -no-3dnow -no-script -no-webkit -no-javascript-jit -no-qt3support -nomake examples -nomake docs -xplatform /qws/mkspecs/linux-arm-gnueabi-g++
6) make ,耗时20-30分钟
出现错误: qthread_unix.cpp: undefined reference to `__tls_get_addr 修改src/corelib/thread目录下的qthread_unix.cpp文件, 关闭HAVE_TLS宏,再编译。 出现错误 ../3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp:662: error: 'pthread_getattr_np' was not declared in this scope pthread_getattr_np在uClibc中没有实现,不使用javascript, 暂时屏蔽了,如果用到javascript会有问题。
|
7) sudo make install, 安装在/usr/local/Trolltech/QtEmbedded-4.8.5-arm。如果需要安装在其他目录,./configure -prefix path指定
8) 修改环境变量,在~/.bashrc中添加以下语句
export ARMQTDIR=/usr/local/Trolltech/QtEmbedded-4.8.5-arm
export PATH=$ARMQTDIR/bin:$PATH
export LD_LIBRARY_PATH=$ARMQTDIR/lib
export QMAKESPEC=$ARMQTDIR /mkspecs/linux-arm-gnueabi-g++
重新加载~/.bashrc:
source ~/.bashrc
检查是否成功:
qmake -v
输出以下信息:
QMake version 2.01a
Using Qt version 4.8.5 in /usr/local/Trolltech/QtEmbedded-4.8.5-arm/lib
9) 例子程序测试
cd /examples/dialogs/standarddialogs
/usr/local/Trolltech/QtEmbedded-4.8.5-arm/bin/qmake -spec /usr/local/Trolltech/QtEmbedded-4.8.5-arm/mkspecs/linux-arm-gnueabi-g++/ -o Makefile standarddialogs.pro
make
arm-linux-strip standarddialogs
upx –qqq –v standarddialogs //压缩
好了,standarddialogs可以放到目标板上去运行了。
4、安装Qt Creator
qt-creator 2.8.1要求ubuntu 11.10 or later,所以装了2.7.2版本。
1) 运行安装程序 ./qt-creator-linux-x86-opensource-2.7.2.bin,按默认配置安装
2) 增加Compiler
指向交叉编译器的arm-hisiv100-linux-g++
3) 增加Qt versions,分别指向刚刚编译的二个平台的qmake。
4) 增加Kits
PC版本的
ARM版本的