• Linux编译移植Qt5的环境_OMAPL138平台


    Linux编译移植Qt5_OMAPL138

    【导语】:昨天编译Qt5各种失败,各种离奇的错误在Google上面也搜索不到,真是让人“蛋疼菊紧”,今天把所有的环境全部清理干净,也重新解压了Qt5.1.1的源码包,重新走了一遍,效果还可以,也没有出现PDA LTS什么库问题,现在整理一下详细过程和细节点。

    另外说一下,我使用Qt5.8.0的源码包进行编译,我的OMAPL138的ARM9架构,在configure阶段就提示我your platform arch too old. 意思就是我的平台的架构太老了,所以如果在ARM9的架构上面编译Qt5,选择一个稍微老一点的版本。我这里选择Qt5.1.1

    **再补充一点:如果在曾经执行过./configure这个命令了,如果出了问题进行修正,最好把这个源码包删除,重新解压一个源码包,说不定哪个配置属性就影响了后续的操作,我之前就是总在这个里,以为每次./configure都是重新配置,然而并不是这样。 **


    编译Qt5.1.1

    1 准备工作

    2 配置源码文件

    下载qt-everywhere-opensource-src-5.1.1.tar.gz的解压,并且切换到这个目录。开始配置信息,我这里有配置好的文件,(链接: https://pan.baidu.com/s/1qYPyAoW 密码: 8eey)这个文件包含一个配置信息的run.sh脚本,和linux-arago-gnueabi-g++的架构信息文件夹。

    把linux-arago-gnueabi-g++架构文件夹拷贝到./qtbase/mkspec文件夹里面,然后我们修改这个文件夹里面的qmake.conf文件,在程序内标定注意事项:

    • QMAKE_CC等编译器使用的是绝对路径。
    • QMAKE_CFLAGS_RELEASE 这里需要写好你目标板子的架构信息(可以在终端运行 arch命令查看)
    • include路径看看其他架构文件夹里面的qmake.conf如何指定,可能不同版本稍有不同。
    #
    # qmake configuration for building with arm-arago-linux-gnueabi-g++
    #
    
    MAKEFILE_GENERATOR      = UNIX
    CONFIG                 += incremental
    QMAKE_INCREMENTAL_STYLE = sublib
    
    #Compiler Flags to take advantage of the ARM architecture
    #Run the linux terminal command "arch" to see the detail your target cpu arch information.
    QMAKE_CFLAGS_RELEASE += -O3 -march=armv5te
    QMAKE_CXXFLAGS_RELEASE += -O3 -march=armv5te
    
    include(../common/linux.conf)
    include(../common/gcc-base-unix.conf)
    include(../common/g++-unix.conf)
    
    # modifications to g++.conf
    QMAKE_CC                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-gcc
    QMAKE_CXX               = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
    QMAKE_LINK              = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
    QMAKE_LINK_SHLIB        = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-g++
    
    # modifications to linux.conf
    QMAKE_AR                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-ar cqs
    QMAKE_OBJCOPY           = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-objcopy
    QMAKE_NM                = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-nm -P
    QMAKE_STRIP             = /home/delvis/opt/toolschain/omapl/arm-arago-linux-gnueabi/bin/arm-arago-linux-gnueabi-strip
    load(qt_config)
    

    再来看run.sh的配置信息(注意给定run.sh chmod 777 权限)注意几个关键点:

    • -prefix :指定make install之后的安装路径。
    • -xplatform :注意是开头字母是x 还有platform,如果少了x会报错说:/usr/bin/ld: .libs/dev2gif.o: Relocations in generic ELF (EM: 40)
    • -xplatform 后面指定我们上面定义的架构信息文件夹。
    #!/bin/sh
    ./configure 
    -v 
    -prefix /home/delvis/work/qt5.1.1 
    -release 
    -opensource 
    -no-accessibility 
    -xplatform linux-arago-gnueabi-g++ 
    -optimized-qmake 
    -pch 
    -qt-sql-sqlite 
    -qt-zlib 
    -no-opengl 
    -no-sse2 
    -no-openssl 
    -no-nis 
    -no-cups 
    -no-glib 
    -no-pkg-config 
    -nomake examples 
    -lrt 
    -no-separate-debug-info
    

    执行sudo ./run.sh然后让它完成配置。

    sudo make -j4 开始编译,编译的过程不可能是一帆风顺的,总会会出现各种的错误,自己找找错误解决吧

    sudo make install之后进入我们-prefix的路径考培就好了。

    拷贝文件到目标板并配置环境

    1)传输Qt5.1.1到开发板

    就是把我们刚才编译的环境拷贝到我们的目标板的目录下,可以使用FTP,可以使用OTG挂在U盘的方式,我喜欢使用SSH协议的scp命令。

    sudo scp -r /home/delvis/work/qt5.1.1 root@192.168.2.103:/opt 输入密码之后就可以把整个文件夹传输到开发板上面了。

    2) 配置开发板的环境

    我们传输完毕之后,则需要在开发板上设定环境,当我们运行qt程序的时候才能寻找到这些Qt库文件。

    打开

    vi /etc/profile

    增加以下,需要注意的是QT_ROOT,写对Qt的路径,还有TSLIB_ROOT编译的是tslib的路径。

    export TSLIB_ROOT=/opt/tslib1.4                                                 
    export QT_ROOT=/opt/qt5.1.1                                                
    export TSLIB_TSDEVICE=/dev/input/event2                                         
    export TSLIB_TSEVENTTYPE=input                                                  
    export TSLIB_CONFFILE=/opt/tslib1.4/etc/ts.conf                                 
    export TSLIB_PLUGINDIR=/opt/tslib1.4/lib/ts                                     
    export TSLIB_CONSOLEDEVICE=none                                                 
    export TSLIB_FBDEVICE=/dev/fb0                                                  
    export QWS_MOUSE_PROTO=tslib:/dev/input/event2                                  
    export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:$QT_ROOT/lib:$TSLIB_ROOT/lib
    export QT_QPA_PLATFORM_PLUGIN_PATH=$QT_ROOT/plugins
    export QT_QPA_PLATFORM=linuxfb:tty=/dev/fb0
    export QT_QPA_FONTDIR=$QT_ROOT/lib/fonts
    export QT_QPA_GENERIC_PLUGINS=tslib 
    

    完成之后,更新一下环境。

    source /etc/profile

    完成配置。

    3)测试

    我们利用Qt Creator制作一个简单的界面,然后编译出可执行文件,讲可执行文件传输到目标板子上面执行,我们的可执行程序叫做TestEM,需要qws参数。

    ./TestEM -qws

    然后就可以看见界面了。

    参考文献:

    [0] Carlos Wei著,Linux编译Qt4的环境_OMAPL138. CNBLOGS

    [1] leocloud著 QT5.7交叉编译安装到arm. CSDN博客.

    [2] 灿哥哥著. Qt5.7.0配置选项(configure options). CSDN博客.

    [3] BigSam78. ARM 指令集版本和ARM 版本. 新浪博客.


    版权声明:

    1. 本文为MULTIBEANS团队研发跟随文章,未经允许不得转载。

    2· 文中涉及的内容若有侵权行为,请与本人联系,本人会及时删除。

    3· 尊重成果,本文将用的参考文献全部给出,向无私的工程师,爱好者致敬。

  • 相关阅读:
    报错注入验证sqli
    pycharm out of memory 闪退
    集群、分布式、负载均衡区别与联系
    如何获取线程池ThreadPoolExecutor正在运行的线程
    docker快速安装mysql
    基于guava实现本地缓存
    NIO selector 多路复用reactor线程模型
    网络编程之NIO
    网络编程之BIO
    反射性能研究,反射赋值与set方法赋值对比
  • 原文地址:https://www.cnblogs.com/sigma0/p/8183977.html
Copyright © 2020-2023  润新知