Qt4.8.7交叉编译环境搭建

一.用虚拟机安装ubuntu-14.04.4-desktop-amd64.iso或者Ubuntu16.04.3

二.apt-get update
apt-get install vim ssh (可不用)

三.安装32位兼容库:
apt-get install libc6:i386 libstdc++6:i386 libncurses5:i386 zlib1g:i386

四. 配置交叉编译环境
下载arm-gcc: gcc-4.6.2-glibc-2.13-linaro-mutlilib-2011.12.tar.bz2到系统~目录并解压缩
tar –jxvf gcc-4.6.2-glibc-2.13-linaro-mutlilib-2011.12.tar.bz2 –C /opt
编辑/etc/profile文件增加
export PATH=$PATH:/opt/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin
source /etc/profile 使修改的变量生效

五. 编译安装tslib

  1. 安装工具:
    apt-get install automake libtool g++ g+±multilib lib32z1

2.创建tslib目录
mkdir /usr/local/tslib目录

3.下载tslib: tslib-1.4.tar.gz 到~
tar xvf tslib-1.4.tar.gz
cd tslib
./autogen.sh
./configure CC=arm-linux-gcc CXX=arm-linux-g++ --prefix=/usr/local/tslib --host=arm-linux ac_cv_func_malloc_0_nonnull=yes
make
sudo make install

4.将/usr/local/tslib/etc/ts.conf文件第二行“#module_raw input”注释去掉,变为“module_raw input”,注意一定要顶格
arm-none-linux-gnueabi-
输入上面指令按两次tab键,如果出现列表说明配置成功
或将编译好的tslib.tar.bz2 解压缩,拷贝到/usr/local/tslib目录.

六, 安装QT

1.创建目录: sudo mkdir /usr/local/qt4.8.5-arm

  1. 下载qt-everywhere-opensource-src-4.8.5.zip到~并解压缩
    unzip –a qt-everywhere-opensource-src-4.8.5.zip (不要用提取,后续编译会出现问题)
    cd qt-everywhere-opensource-src-4.8.5

vim mkspecs/qws/linux-arm-g++/qmake.conf
将arm-linux-全部并加上-lts,然后保存退出
改完如下:
include(…/…/common/linux.conf)
include(…/…/common/gcc-base-unix.conf)
include(…/…/common/g+±unix.conf)
include(…/…/common/qws.conf)

modifications to g++.conf

QMAKE_CC = arm-linux-gcc -lts
QMAKE_CXX = arm-linux-g++ -lts
QMAKE_LINK = arm-linux-g++ -lts
QMAKE_LINK_SHLIB = arm-linux-g++ -lts

modifications to linux.conf

QMAKE_AR = arm-linux-ar cqs
QMAKE_OBJCOPY = arm-linux-objcopy
QMAKE_STRIP = arm-linux-strip

load(qt_config) 运行下面三条指令中的任意一条(一般我运行的第二条)

./configure --prefix=/usr/local/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -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 -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license
(ok)

./configure --prefix=/usr/local/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-phonon -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -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 -no-mouse-linuxtp -qt-mouse-tslib -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license

./configure --prefix=/usr/local/Tr/qt4.8.5-arm -opensource -release -shared -Declarative -importdir /opt/imports -fast -no-largefile -qt-sql-sqlite -qt3support -exceptions -xmlpatterns -no-glib -no-mmx -no-3dnow -no-sse -no-sse2 -svg -no-webkit -qt-zlib -qt-libtiff -qt-libpng -qt-libjpeg -make libs -make tools -nomake examples -nomake docs -nomake demo -no-nis -no-cups -iconv -no-dbus -xplatform qws/linux-arm-g++ -embedded arm -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 -no-mouse-linuxtp -qt-mouse-tslib -qt-mouse-pc -DQT_QLOCALE_USES_FCVT -DQT_NO_QWS_CURSOR -no-pch -I/usr/local/tslib/include -L/usr/local/tslib/lib -confirm-license

下面蓝色内容为开发板上需要配置的内容
-qt-mouse-linuxinput, 支持电容屏
-qt-mouse-linuxinput 支持Linux input子系统的鼠标驱动

-qt-mouse-pc
-qt-mouse-linuxtp
-qt-mouse-linuxinput
-plugin-mouse-linuxtp
-plugin-mouse-pc

-qt-mouse-tslib -qt-mouse-pc -no-mouse-linuxtp

-no-mouse-pc -no-mouse-qvfb -no-mouse-linuxtp -no-mouse-qnx -qt-mouse-linuxinput -qt-mouse-tslib
-qt-mouse-tslib -qt-mouse-linuxinput -qt-mouse-pc -no-mouse-linuxtp

make
sudo make install

  1. 配置QT变量环境
    export PATH= P A T H : / u s r / l o c a l / q t 4.8.5 − a r m / b i n e x p o r t L D L I B R A R Y P A T H = PATH:/usr/local/qt4.8.5-arm/bin export LD_LIBRARY_PATH= PATH:/usr/local/qt4.8.5arm/binexportLDLIBRARYPATH=LD_LIBRARY_PATH:/usr/local/qt4.8.5-arm/lib

将以上命令添加到/etc/profile 文件中
source /etc/profile 使修改的变量生效

cp /usr/local/qt4.8.5-arm/bin/qmake /usr/bin/qmake
sudo apt-get install qt4-dev-tools

七、安装qt Creator
下载qt-creator-linux-x86_64-opensource-2.8.1.run到系统,在界面环境安装完成即可.
chmod a+x qt-creator-linux-x86_64-opensource-2.8.1.run
./ qt-creator-linux-x86_64-opensource-2.8.1.run

八、配置qt Creator
参考:http://www.linuxidc.com/Linux/2014-04/99758.htm

下面蓝色是需要在开发板上配置的文件,一般都是已经配置好的
七、 移植Qt到开发板
开发板上要使用的东西就2个,一个是编译后的tslib,一个是编译后qt目录下的lib目录
1、打包lib
我们Qt 安装完成之后,为解决符号链接的问题,可以利用先打包,然后直接解压到开发板的做法:
$ cd /usr/local/qt4.8.5-arm
$ tar -zcf lib.tar.gz lib
$ cd /usr/local
$tar -zcf tslib.tar.gz tslib
将打包好的压缩文件 lib.tar.gz 和 tslib.tar.gz 复制到开发板,然后解压:

mkdir -p /usr/local/qt4.8.5-arm
tar xzvf lib.tar.gz -C /usr/local/qt4.8.5-arm
tar xzvf tslib.tar.gz -C /usr/loacal

八、设置开发板上的环境变量
export LD_LIBRARY_PATH=/lib: L D L I B R A R Y P A T H e x p o r t Q T D I R = / u s r / l o c a l / q t 4.8.5 − a r m e x p o r t T R O O T = / u s r / l o c a l / t s l i b e x p o r t P A T H = LD_LIBRARY_PATH export QTDIR=/usr/local/qt4.8.5-arm export T_ROOT=/usr/local/tslib export PATH= LDLIBRARYPATHexportQTDIR=/usr/local/qt4.8.5armexportTROOT=/usr/local/tslibexportPATH=T_ROOT/bin: P A T H e x p o r t L D L I B R A R Y P A T H = PATH export LD_LIBRARY_PATH= PATHexportLDLIBRARYPATH=T_ROOT/lib: Q T D I R / l i b : QTDIR/lib: QTDIR/lib:LD_LIBRARY_PATH
export TSLIB_CONSOLEDEVICE=none
export TSLIB_FBDEVICE=/dev/fb0
export TSLIB_TSDEVICE=/dev/input/event0
export TSLIB_PLUGINDIR= T R O O T / l i b / t s e x p o r t T S L I B C O N F F I L E = T_ROOT/lib/ts export TSLIB_CONFFILE= TROOT/lib/tsexportTSLIBCONFFILE=T_ROOT/etc/ts.conf
export TSLIB_CALIBFILE=/etc/pointercal
export QWS_KEYBOARD=USB:/dev/input/event1
export QWS_MOUSE_PROTO=Tslib:/dev/ input/event0
export QT_QWS_FONTDIR=$QTDIR/lib/fonts

九、ubuntu上安装配置NFS

  1. 安装 NFS 软件包
    在终端输入下面命令安装 NFS 服务器:
    sudo apt-get install nfs-kernel-server #安装 NFS 服务器端
    sudo apt-get install nfs-common #安装 NFS 客户端
  2. 添加 NFS 共享目录
    安装完 NFS 服务器等相关软件后,需要指定用于共享的 NFS 目录,其方法是在“/etc/exports”文件里面设置对应的目录及相应的访问权限,每一行对应一个设置。下面介绍如何添加 NFS 共享目录。在终端输入“sudo vi /etc/exports”指令,如下所示:
    sudo vi /etc/exports
    [sudo] password for vmuser:
    “/etc/exports”文件打开后,文件内容如下
    #to NFS clients. See exports(5).

#Example for NFSv2 and NFSv3:
#/srv/homes hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)

#Example for NFSv4:
#/srv/nfs4 gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
#/srv/nfs4/homes gss/krb5i(rw,sync,no_subtree_check)
若需要把“/home/share”目录设置为 NFS 共享目录,请在该文件末尾添加下面的一行:
/home/share (rw,sync,no_root_squash)
其中“
”表示允许任何网段 IP 的系统访问该 NFS 目录。
修改完成后,保存并退出“/etc/exports”文件。然后新建“/share”目录,并为该目录设置最宽松的权限:
sudo mkdir /home/share

3.启动 NFS 服务
在终端中执行如下命令,可以启动 NFS 服务:
sudo /etc/init.d/nfs-kernel-server start
执行如下命令则可以重新启动 NFS 服务:
sudo /etc/init.d/nfs-kernel-server restart
在 NFS 服务已经启动的情况下,如果修改了 “/etc/exports” 文件,需要重启 NFS 服务,以刷新 NFS 的共享目录。当然在下一次启动系统时,NFS 服务是自动启动的。
4. 测试 NFS 服务器
NFS 服务启动后,可以在 Linux 主机上进行自测。 测试的基本方法为:将已经设定好的NFS 共享目录 mount(挂载)到另外一个目录下,看能否成功。假定 Linux 主机 IP 为 172.23.1.84,NFS 共享目录为/home/share 可使用如下命令进行测试:
vmuser@Linux-host~$ sudo mount -t nfs 172.23.1.84: /home/share /mnt -o nolock
如果指令运行没有出错,则 NFS 挂载成功,在/mnt 目录下应该可以看到/nfsroot 目录下的内容。

十、在combox上挂载 NFS 目录
若主机配置好了 NFS 服务,则可以在 combox上把主机的 NFS 目录挂载到本地的目录。在挂载主机的 NFS 目录前,建议使用 ping 命令测试目标机和主机之间网络是否畅通。
假设主机的 NFS 目录为/home/share,IP 地址为 192.168.28.235,在 combox 的终端输入下面命令挂载主机的 NFS 目录:
mount -t nfs 172.23.1.84: /home/share /mnt -o nolock
若命令没有出错,表示挂载成功,进入/mnt/目录就可以访问主机的/ home/share目录。

十一、交叉编译combox程序,并在开发板上运行
1.进入项目目录
cd 项目路径
2.交叉编译生成可执行文件
qmake –ComboxSystem.pro
qmake
make
此时会生成一个可执行文件ComboxSystem
将项目拷贝到新搭建的环境时候最好先运行 make clean,然后再执行上述操作
3.将可执行文件ComboxSystem拷贝到NFS目录下
sudo cp -i -r /home/pure/Desktop/ComboxSystem/ComboxSystem /home/share
/home/pure/Desktop/ComboxSystem/ComboxSystem是项目文件的目录
4.在combox上运行
在combox上挂在主机NFS目录:mount -t nfs 192.168.1.111:/home/share /mnt
然后在/mnt目录下就能看到可执行文件ComboxSystem,运行./ ComboxSystem –qws 就能运行程序,调试阶段可直接在/mnt目录下执行文件,等程序调试成功后直接覆盖combox上面原有的项目可执行文件即可。

你可能感兴趣的:(Qt4.8.7交叉编译环境搭建)