首先要准备好交叉编译所需要的软件包:
(1)arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz(交叉编译环境,tiny6410自带的)
(2)qt-everywhere-opensource-src-4.8.5.tar.gz(Qt的源码,tiny6410自带的)
(3)qt-creator-linux-x86_64-opensource-2.5.2.bin(我的系统是64位,所以选择x86_64,tiny6410自带的)
(4)tslib-1.4.tar.gz(触摸屏校验工具,网上download或者使用git下载)
2.环境的搭建
2.1 系统环境
主机操作系统:ubuntu14.04
主机编译器:gcc4.8.4,
交叉编译器:arm-linux-gcc-4.5.1
2.2 安装交叉编译器
(1)首先以root用户登入
(2)复制arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz到tmp文件夹里
(3)解压tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz-C /
注意以上命令必须要有-C而且是大写的后边有个空格也要注意
(4)配置下编译环境路径 在控制台下输入 vim .bashrc,文件末尾加上
exportPATH=/opt/FriendlyARM/toolschain/4.5.1/bin:$PATH
(5)输入:source .bashrc
(6)输入:arm-linux-gcc -v 如果出现下面界面,就代表交叉编译器安装成功,会输出gcc的版本号;
2.3 安装触摸屏校验工具
把tslib-1.4.tar.gz放到一个目录下,比如/opt目录下。接着执行命令如下:
#tar zxvf tslib-1.4.tar.gz
执行命令cd tslib,进入tslib当前目录,接着执行命令如下:
#./autogen.sh
然后接着执行配置命令:
#./configure --prefix=/usr/local/tslib --host=arm-linuxac_cv_func_malloc_0_nonnull=yes
最后执行编译命令和安装命令如下:
1.make
2.make install
如果以上步骤没错,则可以在/usr/local/tslib下出现我们需要的库文件,这些库文件我们移植时会用到。
编译期间出现的错误:./autogen.sh: 4: autoreconf:not found
解决办法:sudo apt-get install autoconfautomake libtool
2.4 安装QtCreator
qt-creator-linux-x86_64-opensource-2.5.2.bin拷贝到Linux系统中,在终端中把路径切换到qt-creator-linux-x86_64-opensource-2.5.2.bin所在的路径,运行命令:./qt-creator-linux-x86_64-opensource-2.5.2.bin 就会出现图形安装界面;下面的安装步骤就和我们在windows下安装软件差不多。
注意:下的版本要和你的操作系统相匹配,32位的系统下对应32位的应用程序;
2.5 编译Qt库源码
2.5.1 解压
将源码qt-everywhere-opensource-src-4.8.5.tar.gz 进行解压,并复制两份到/usr/local目录下,并分别命名为qt-pc,qt-arm。
2.5.2 编译PC版
进入qt-pc目录,执行如下操作:
#./configure
# make
# make install
编译过程中出现的问题:
出错:Basic XLibfunctionality test failed!
这个错误主要是因为,XLib库没有安装,所以在编译X11平台时,应该保证,以下命令正确执行:sudo apt-get installlibx11-dev libxext-dev libxtst-dev
注意:可以使用 make confclean 命令 把以前的配置信息清除掉,然后再重新配置。
2.5.3 编译ARM版
进入qt-arm目录,执行如下操作:
#vim /usr/local/qt-arm/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++/ qmake.conf
# ./configure -prefix/usr/local/Trolltech/QtEmbedded-4.8.5-arm -opensource -confirm-license -release-shared -embedded arm -xplatform qws/linux-arm-g++ -depths 16,18,24 -fast-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-opengl -no-cups -no-glib -no-xcursor -no-xfixes -no-xrandr -no-xrender -no-pch -no-separate-debug-info -nomake examples -nomake tools -nomake docs-qt-mouse-tslib -I/usr/local/tslib/include -L/usr/local/tslib/lib
#make
#make install
安装完成后,在/usr/local/Trolltech目录中有两个个文件夹:Qt-4.8.5、QtEmbedded-4.8.5-arm。
QtCreator编译前的配置
打开QtCreator ,工具---->选项--->构建和运行 进行设置,在Qt版本菜单下,手动设置选择qmake路径。
构建项目的时候
运行的时候
编译成功后,查看下文件是否是ARM格式的,用file来查看
用SD卡或者tftp把编译好的代码拷贝到Tiny6410板子中,
#cp /sdcard/ARMTEST /bin
#chmod +x /bin/ARMTEST
#ARMTEST -qws
最后效果图
错误区:
1、在开发板运行时出现类似错误:error while loading sharedlibraries: libts-0.0.so.0: cannot open shared object file: No such file ordirectory
安装QtEmbedded-4.8.5-arm目录下,把.so文件都拷贝到开发板的/lib文件下
2、编译出错:cc1: fatal error:.pch/release-shared-emb-arm/QtGui: No such file or directory 解决方案:
configure参数:后面增加:-no-pch
3、libts-0.0.so.0 need by libQtGui.so: notfound(try using -rpath or -rpath-link)
在/usr/local/qt-arm/qt-everywhere-opensource-src-4.8.5/mkspecs/qws/linux-arm-g++/ qmake.conf文件中增加-lts
由于老的arm-linux-gnu工具链不支持64位,因此需要安装32位库
sudo apt-get install lsb-core