在Ubuntu系统下运用QT编译Android程序DREAM。因为自己在做这个程序时犯了许多低级错误,可能很多初学QT 的朋友也会出现这样的问题。目前我的程序已经基本编译好了,在这里做下总结,本文记录了我在这次编译过程中的步骤,并附上截图,初学者应该可以参考我的步骤进行练习。我也是新手练习,里面可能存在一些错误,希望大家看后指点
。
准备工作:
android
sdk
ndk
QT
DREAM 源码下载:
相关库下载:
QWT
fftw
QT的影子构建:
说明中这样写的:
Qtcreator uses shadow builds by default. To keep the cross-compiled libraries separate from anything else, they should be installed in the build directory. This involves a two step process of running qmake in qtcreator to make the build directory, installing the libraries and then running qmake again.
我的理解是这样的,首先,要生成构建路径,然后在路径中将库安装进去,重新构建,加载库文件,然后就结束了
下面就动手吧
第一步,生成构建路径
我是将dream解压放在/usr/src目录下的
tar xvf dream-2.1.1-svn808.tar.gz
运行QTcreator,环境变量设置好以后,直接在终端输入命令qtcreator即可
选择open project,路径/usr/src/dream,选择dream.pro
进行配置
注意此时我的build directory:
/usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug 之后的库文件是需要安装在这里的。配置完成。 构建——>执行qmake 查看/usr/src/目录,已经生成了
/usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug
我们可以看看此时已经生成的目录中是没有需要添加的库文件的,下一步就是要将需要添加的fftw库,QWT库进行安装配置
第二步,安装库
根据指导,对于库的安装分成两中
(1)编译automake-style libraries on linux
首先配置临时环境变量
(注意我的是32位系统,所以设置BUILD_ARCH=linux-x86,如果是64位系统则BUILD_ARCH=linux-x86_64)
export BUILD_ARCH=linux-x86 export API_LEVEL=android-15 export ANDROID_NDK_ROOT=/opt/android/ndk export BUILD_DIR=/usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug export PATH=$ANDROID_NDK_ROOT/toolchains/arm-linux-androideabi-4.8/prebuilt/$BUILD_ARCH/bin:$PATH export SYSROOT=$ANDROID_NDK_ROOT/platforms/$API_LEVEL/arch-arm
查看环境变量是否配置成功:
在终端输入
env |grep BUILD_ARCH,其他类似
安装fftw-3库
进入解压好的fftw-3.3.3
./configure --host=arm-linux-androideabi CFLAGS=--sysroot=$SYSROOT --prefix=$BUILD_DIR
make
make install
查看库是否已经编译在指定地方
root@yu:/usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug/include# ls
fftw3.f fftw3.f03 fftw3.h fftw3l.f03 fftw3q.f03
root@yu:/usr/src/build-dream-Android_for_armeabi_v7a_GCC_4_8_Qt_5_2_0-Debug/lib# ls
libfftw3.a libfftw3.la pkgconfig
(2)编译QWT
进入解压好的qwt-6.1.0目录,dream是要编译成安卓应用的,里面不需要designer模块。在目录中有INSTALL等安装说明,我们可以修改qwt.pri,修改编译时的配置,不编译的designer模块。
执行qmake
/opt/Qt/5.2.0/android_armv7/bin/qmake
make
这里也可以使用qtcreator进行编译,用qtcreator打开qwt.pro。配置。构建->清理所有项目->执行qmake->重新构建qwt.
进入qwt构建目录,make install
网上有的文章中在qwt.pro结尾添加了:
INCLUDEPATH +=/usr/local/qwt-6.1.0/include
LIBS +=-L"/usr/local/qwt-6.1.0/lib" -lqwt
我也模仿了
之后就是将库文件拷贝到对应位置
mkdir -p $BUILD_DIR/include/qwt
cp src/*.h $BUILD_DIR/include/qwt
mkdir -p $BUILD_DIR/lib
mv lib/* $BUILD_DIR/lib
第三步:在qtcreator中重新执行qmake,构建运行