QT平台的移植(IMX7D)

系统平台:ubuntu 16.04

QT源码信息:
        QT版本:QT5.5.1   
        下载地址:http://download.qt.io/archive/qt/5.5/5.5.1/single/
        下载包名: qt-everywhere-opensource-src-5.5.1.tar.gz

交叉编译工具:
            下载地址:http://releases.linaro.org/archive/14.07/components/toolchain/binaries/
            名称:gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.bz2
            版本:4.9.1

注:文中提到的附件都贴在文章的最后面

            
移植流程:
    1、安装交叉编译链:
        解压:tar -zxvf gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.bz2
        然后在环境变量里面(/etc/profile)添加交叉编译链的路径。
        重启系统使环境变量生效
    2、解压QT源码包
        tar -zxvf qt-everywhere-opensource-src-5.5.1.tar.gz
    3、配置QT
        将    ./qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/linux-arm-gnueabi-g++目录下的qmake.conf替换成附件1的内容
        在    ./qt-everywhere-opensource-src-5.5.1目录下创建一个autoconf.sh文件,并更改权限
            命令:    touch autoconf.sh
                            sudo chmod 777 autoconf.sh
        将    autoconf.sh文件里面的内容替换成附件2的内容
        执行    autoconf.sh   
            命令  ./autoconf.sh
    4、编译、安装QT
        make -j16
        make -j16 install

    5、移植QT到开发板上
        在ubuntu操作系统(即我们的主机)/usr/local目录下,可以看见一个Qt-5.5.1的目录,将该目录复制到开发板的/usr/local下面,路径一定要一致
    6、在开发板上配置QT相关环境变量
        在开发板的/etc/profile文件里面添加附件3的内容,注意是添加
    7、编译开发板可以用的QT程序
        使用QT-creator创建一个简单的Qwidget程序,随便一个简单的图形界面。
        通过命令行,进入到我们创建的工程,删除其他的文件,只剩下:main.cpp  mainwindow.cpp  mainwindow.h  mainwindow.ui四个文件
        然后执行命令:/usr/local/Qt-5.5.1/bin/qmake -project QT+=widgets
                    qmake
                    make

        然后可以看见当前目录下会生成可执行文件,将该文件复制到开发板上。
        进入开发板,运行我们复制过来的QT程序
            注:假设我们生成的可执行的程序名字是monkey  通过file monkey可以查看该文件是不是arm的可执行程序,显示的信息如附件4
                
        运行程序的时候,可能会提示依赖库文件,这个时候,查看附近4的信息里面有    这样一句  /lib/ld-linux-armhf.so.3
        然后去开发板 /lib下面,通过ln命令将我们的 ld-linux-armhf.so.3 软链接到开发板 /lib里面的 ld-2.22.so(这个ld-2.22.so文件各个系统可能有所不同)
        然后重新运行
            
        
附件1:
#
# qmake configuration for building with arm-linux-gnueabi-g++
#

MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublib

include(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)

QT_QPA_DEFAULT_PLATFORM = linuxfb

QMAKE_CFLAGS           += -march=armv7-a -mfpu=neon #-DLINUX=1 -DEGL_API_FB=1
QMAKE_CXXFLAGS         += -march=armv7-a -mfpu=neon #-DLINUX=1 -DEGL_API_FB=1

# modifications to g++.conf
QMAKE_CC                = arm-linux-gnueabihf-gcc
QMAKE_CXX               = arm-linux-gnueabihf-g++
QMAKE_LINK              = arm-linux-gnueabihf-g++
QMAKE_LINK_SHLIB        = arm-linux-gnueabihf-g++

# modifications to linux.conf
QMAKE_AR                = arm-linux-gnueabihf-ar cqs
QMAKE_OBJCOPY           = arm-linux-gnueabihf-objcopy
QMAKE_NM                = arm-linux-gnueabihf-nm -P
QMAKE_STRIP             = arm-linux-gnueabihf-strip
load(qt_config)    
附件1结束\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


附件2:

#!/bin/sh
#下面的配置信息可以通过  ./configure --help查看

./configure \

       -prefix /usr/QT-5.5.1/ \
        -opensource -confirm-license -no-pch -no-xcb -no-openssl -no-opengl \
        -dbus \
        -qt-zlib \
        -no-sse2 \
        -no-iconv \
        -release \
        -no-dbus \
        -make libs \
        -no-opengl \
        -qt-zlib \
        -no-iconv \
        -qt-libjpeg \
        -linuxfb \
        -force-pkg-config \
        -xplatform linux-arm-gnueabi-g++ \
        -no-gcc-sysroot \
        -make examples -nomake tools -nomake tests
        
#        make -j 16 && make -j 16 install
#-xplatform linux-arm-gnueabi-g++ 这个参数就是我们移植流程3的第一步的操作目录  意思是:指定编译的平台或者设备

#-prefix /usr/QT-5.5.1/   指定我们编译好后的文件存储路径
附件2结束\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


附件3

export QT_ROOT=/usr/local/Qt-5.5.1                         
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/lib:/usr/lib:$QT_ROOT/lib
export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0       
export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts           
export QT_QPA_GENERIC_PLUGINS=/dev/input/event5             
export QML2_IMPORT_PATH=$QT_ROOT/qml

附件3结束\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\


附件4

monkey: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.1.1, BuildID[sha1]=589ee01ccb61e306346b1c3135738da0d73164a9, not stripped

附件4结束\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

monkey_llll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值