虚拟机中在Ubuntu14.04下搭建QT交叉编译环境--2014/8/14

一、Ubuntu安装及配置

在windows上下载VMware10.0.2 并安装,在网上找永久密钥激活。打开后是中文版
在Ubuntu官网上下载ubuntu-14.04.1-desktop-i386

打开虚拟机,并创建新的虚拟机,内存1g,硬盘20g 。虚拟磁盘文件分多个保存。打开后略卡。

虚拟机网络模式选桥接,由于网络设置暂时没弄,简单连校园网。
在软件更新里尝试找到附加驱动里的显卡驱动,看是否能让系统不太卡。发现没有附加驱动。
在软件更新里添加软件源,并设置服务器为中国服务器。

在系统设置的语言支持里更新语言并添加 chinese(简),并应用到整个系统,重启后ubuntu变为汉语。

设置登录界面添加root登录:

打开终端
输入sudo gedit /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在弹出的编辑框里输入:greeter-show-manual-login=true 保存关闭。
再在中端中输入:sudo passwd root
输入你想要的密码,关机重启在多出的登录框里输入root 还有你的密码就好了!


二、安装QTcreater

上QT官网下载qt-linux-opensource-5.2.1-x86-offline.run
通过mac转到虚拟机里后,剪切到/home/zl

在终端执行:./qt-linux-opensource-5.2.1-x86-offline.run

出现图形界面不断next安装在用户目录下,source组建暂时不装

finish后打开QT creater的例程运行,出现:”Qt Creator 需要设置一个编译器来构建。在构建套件选项里设置一个编译器。”。看来是编译器的问题。

然后安装g++编译器sudo apt-get install g++


安装完编译器后,重新打开Qt Creator,发现已经可以编译了,但是报告一个错误:”GL/gl.h:No such file or directory”。这是因为机器没有安装OpenGL库,执行下面的语句安装即可:

sudo apt-get install mesa-common-dev libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

安装完成后,再次编译运行,发现示例程序成功运行起来了:

在某些情况下,我们希望在终端(Shell)下编写Qt代码,而不是在Qt Creator中,下面的步骤说明了这种情况下需要做的工作:
sudo gedit ~/.bashrc

在文件尾加上export PATH="/home/zl/Qt5.3.1/5.3/gcc/bin":$PATH


使其立即生效,在终端执行:
source ~/.bashrc

 

三、安装交叉编译器

1.建立目录
$ sudo mkdir /usr/local/arm
2.复制文件
文件arm-linux-gcc-4.4.3.tar.gz,放在Desktop
进入Desktop
$ cd ~/Desktop
复制
$ sudo cp arm-linux-gcc-4.4.3.tar.gz /usr/local/arm
3.解压文件
进入目录
$ cd /usr/local/arm
解压
$ sudo tar -xzvf arm-linux-gcc-4.4.3.tar.gz
4.添加环境变量
用gedit打开文件bash.bashrc
$ sudo gedit /etc/bash.bashrc
在最后一行添加“export PATH=/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH”,保存文件
使其立即生效,在终端执行:
source ~/.bashrc

查看版本号,若有则成功
$ arm-linux-gcc -v


四、安装触摸屏校验工具

把tslib-1.4.tar.gz放到一个目录下,比如/opt目录下。接着执行命令如下:
       #tar zxvf tslib-1.4.tar.gz
执行命令cd tslib,进入tslib当前目录,接着执行命令如下:
       #./autogen.sh

出现错误:
  ./autogen.sh: 4: autoreconf: not found
  是在不同版本的 tslib 下执行 autogen.sh 产生。它们产生的原因一样,是
因为没有安装
  automake 工具,     用下面的命令安装好就可以了。
  sudo apt-get install autoconf automake libtool

安装完后继续/autogen.sh
然后接着执行配置命令:
       #./configure     --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
最后执行编译命令和安装命令如下:
      1.        make 
      2.        make install


五、编译QT


将源码qt-everywhere-opensource-src-4.8.6.tar.gz 进行解压,并复制三份到/usr/local目录下,并分别命名为qt-pc,qt-x86,qt-arm。

1.编译PC版


进入qt-pc目录,执行如下操作:
#./configure
# make
# make install

完成后进入usr/local/trolltech看看是否有QT-4.8.6

修改环境变量
运行
# gedit ~/.profile
到最后一行,复制代码 export QTDIR=/usr/local/Trolltech/Qt-4.8.1
export PATH=/usr/local/Trolltech/Qt-4.8.1/bin:$PATH
( PATH=$QTDIR/bin:$PATH )
export MANPATH=$QTDIR/man:$MANPATH
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
保存,退出,运行
# source ~/.profile

检查是否成功安装且环境变量生效
# qmake –v
显示
QMake version 2.01a
Using Qt version 4.8.1 in /usr/local/Trolltech/Qt-4.8.1/lib

为下一步编译X86版本安装文件

sudo apt-get install libx11-dev  libxext-dev libxtst-dev  libqt4-dev xorg-dev

 

2.编译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

出现undefined reference to `png_write_chunk'等
collect2: ld 返回 1
make: *** [../../bin/qvfb] 错误 1

解决办法:
第一步:#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这两项

重新make后,成功!

编译完毕,将qt-pc/bin目录下的qvfb文件复制到/usr/local/Trolltech/QtEmbedded-4.8.6/bin目录。

 

3.编译ARM版

进入qt-arm 目录,执行以下操作:

./configure -prefix  /usr/local/Trolltech/QtEmbedded-4.8.6-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-separate-debug-info -nomake examples  -nomake tools  -nomake docs -qt-mouse-tslib  -I/usr/local/tslib/include  -L/usr/local/tslib/lib  -force-pkg-config

出现错误:tslib测试失败
解决办法:

在/usr/local/qt-arm/mkspecs/qws/linux-arm-g++的qmake.conf 中添加

QMAKE_INCDIR=/usr/local/tslib/include
QMAKE_LIBDIR=/usr/local/tslib/lib

gedit  /root/.bashrc
添加
export PATH=/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
source  /root/.bashrc

gedit /etc/profile
添加
export PATH=/usr/local/arm/opt/FriendlyARM/toolschain/4.4.3/bin:$PATH
source /etc/profile

重新输入上面的一大段configure

配置完成后
make
make install

 

备选:
(在软件中心安装QTDesigner,QTliguist,QT助手)


六、测试qvfb

现在终端输入命令:qvfb -width 800 -height 480 &  打开虚拟缓冲端;
然后就可以在QtCreator对程序进行编译、运行了;

 

七、移植程序到ARM开发板(未测试)


在开发板上创建/opt/文件夹 

将linux上/opt/ts拷贝到开发板的/opt/下,然后进入./ts/etc/ts.conf修改第二行
,将#号和空格去掉
 
 
进入到/usr/local/Trolltech/Qt-arm/lib 
通过命令 cp XXXXXX -d /utuLinux2.6/s3c2440_recover/usr/local/Trolltech/Qt-arm/lib
将linux本机上的四个库文件及其相关的连接符号文件一起考到开发板的文件夹下。
(-d 参数会同时修改链接符号文件指向)。
 XXXXXX  

libQtCore.so.4.8.6
libQtSql.so.4。8.6 

libQtNetwork.so.4.8.6 
libQtGui.so.4.8.6    
实例: 
cp libQtCore.so* -d /utuLinux2.6/s3c2440_recover/usr/local/Trolltech/Qt-4.6.3-arm/lib/   

修改添加开发板/etc/profile  

export LD_LIBRARY_PATH=/lib:$LD_LIBRARY_PATH 
export QTDIR=/usr/local/Trolltech/Qt-arm 
export QPEDIR=$QTDIR export T_ROOT=/opt/ts 

export PATH=$T_ROOT/bin:$PATH 

export LD_LIBRARY_PATH=$T_ROOT/lib:$QTDIR/lib:$LD_LIBRARY_PATH 
export TSLIB_CONSOLEDEVICE=none 
export TSLIB_FBDEVICE=/dev/fb0 
export TSLIB_TSDEVICE=/dev/event0 

export TSLIB_PLUGINDIR=$T_ROOT/lib/ts 
export TSLIB_CONFFILE=$T_ROOT/etc/ts.conf 
export TSLIB_CALIBFILE=/etc/pointercal 
export QWS_KEYBOARD=USB:/dev/input/event1 
export QWS_MOUSE_PROTO=Tslib:/dev/event0 
export QWS_DISPLAY=LinuxFb:mmWidth45:mmHeight60:0 
export QWS_SIZE=320x240   

然后qmake –project 
qmake 

这里需要修改Makefile: 
修改当前生成的Makefile 
在19行的最后加上 -lts 

LIBS = $(SUBLIBS)  -L/usr/local/Trolltech/Qt-4.6.3-arm/lib -lQtGui -L/opt/ts/lib -L/usr/local/Trolltech/Qt-4.6.3-arm/lib -lQtNetwork -lQtCore -lpthread –lts  

进到开发板的lib库下面 
cd /lib 

 

ln -s libstdc\+\+.so.60.0.3 libstdc\+\+.so.6  

并且在开发板根目录下面创建/tmp/目录  

make 

执行可执行文件时要在后面加上 –qws   

FAQ:   

1 执行自己的qt程序之前,请先执行/opt/ts/bin/ts_calibrate校准触摸屏,不然自己的qt程序不能使用触摸屏,会提示:Could not read calibration: "/etc/pointercal"

你可能感兴趣的:(QT)