自己花了好几天搭Qt开发环境,这里做笔记,怕以后遗忘。。。。。。
1.安装交叉编译器
安装arm-linux-gcc-4.3.2编译器:
1.1 sudo tar xzf arm-linux-gcc-4.3.2.tgz -C / (解压到根目录中)
1.2修改环境变量(每次都需要手工设置):export PATH=/usr/local/arm/4.3.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
(查看环境变量:echo $PATH)
1.3永久性地修改环境变量:
(1)sudo vi /etc/environment
(2)修改PATH为:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
(老版本编译器3.4.5):/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/work/tools/gcc-3.4.5-glibc-2.3.6/bin
(3)重启虚拟机
2.安装触摸屏校验工具(主要是为了编译Arm版)
把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-linux ac_cv_func_malloc_0_nonnull=yes
最后执行编译命令和安装命令如下:
1. make
2. make install
如果以上步骤没错,则可以在/usr/local/tslib下出现我们需要的库文件,这些库文件我们移植时会用到。
编译期间出现的错误:./autogen.sh: 4: autoreconf: not found
解决办法:sudo apt-get install autoconf automake libtool
10.3编译Qt库源码
10.3.1解压
将源码qt-everywhere-opensource-src-4.8.5.tar.gz 进行解压(tar zxvf qt-everywhere-opensource-src-4.8.5.tar.gz -C /usr/local/),并复制三份到/usr/local目录下,并分别命名为qt-pc,qt-x86,qt-arm。
编译PC版
进入qt-pc目录,执行如下操作:
#./configure
# make
# make install
编译过程中出现的问题:
出错:Basic XLibfunctionality test failed!
这个错误主要是因为,XLib库没有安装,所以在编译X11平台时,应该保证,以下命令正确执行:sudo apt-get install libx11-dev libxext-dev libxtst-dev
注意:可以使用 make confclean 命令 把以前的配置信息清除掉,然后再重新配置。
10.3.3编译x86版
进入qt-x86目录,执行如下操作:
# ./configure -embedded x86 -qt-gfx-qvfb -qt-kbd-qvfb -qt-mouse-qvfb
# make
# make install
安装过程比较长,没有碰到过错误。
编译安装PC版中的 qvfb:
进入qt-pc/tools/qvfb/目录,执行如下操作:
#make
编译完毕,将qt-pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.8.5/bin目录。
编译qvfb时,出现了如下错误:
x11keyfaker.cpp:48:34: 致命错误: X11/extensions/XTest.h:没有那个文件或目录
编译中断。make: *** [.obj/release-shared/x11keyfaker.o] 错误 1
解决方法:
sudo apt-get install xorg-dev
如果makefile中没有-lXtst选项,则修改makefile 中 LIBS 选项: 添加 -lXtst选项
undefined reference to `png_create_write_struct'问题
第一步:#locate libpng
第二步:建立链接#ln -s /lib/i386-linux-gnu/libpng12.so.0 /lib/i386-linux-gnu/libpng.so
第三步:修改Makefile文件,#gedit Makefile(或者 #vi Makefile),在LIBS后面添加-L/lib/i386-linux-gnu -lpng这两项
在/usr/local/Trolltech/QtEmbedded-4.8.5/bin目录下运行: ./qvfb -width 800 -height 600
然后运行Qt工程
10.3.4编译arm版
进入qt-arm目录,执行如下操作
之前先执行如下操作(否则会报错):
把/usr/local/tslib/lib 下的相关库libts-0.0.so.0 libts-0.0.so.0.1.0拷贝到/usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib(config指定编译器目录)
cp libts-0.0.so.0.1.1 /usr/local/arm/4.3.2/arm-none-linux-gnueabi/lib
然后:
第一步:./configure -v -prefix /usr/local/Trolltech/qt-4.8.5-arm -opensource -confirm-license -embedded arm -release -shared -fast -no-largefile -qt-sql-sqlite -qt3support -no-xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -no-svg -webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -make examples -make demos -make translations -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-gnueabi-g++ -little-endian -qt-freetype -depths 16,24,32 -qt-gfx-linuxfb -qt-gfx-transformed -qt-gfx-multiscreen -no-gfx-vnc -no-gfx-qvfb -qt-kbd-linuxinput -no-kbd-qvfb -armfpa -no-mouse-qvfb -qt-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -I/usr/local/tslib/include -L/usr/local/tslib/lib -rpath
-xplatform qws/linux-arm-gnueabi-g++其中要指定编译器的目录,该目录应为你电脑编译器
先进入qt-arm目录下的mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf,查看是否里面编译器,与指令arm-linux-gcc -v弹出的编译器相同,如果不相同则修改
第二步:make
第三步:make install
注:若编译失败,可make clean再make confclean退出重新编译,但是最好重新将原包解压再重新编译,因为可能遇见不可知的错误