zoukankan      html  css  js  c++  java
  • arm板载ubuntu18.04系统安装QT4.8.7

    1,安装缘由

    原来有个QT应用程序,在ubuntu12.04虚拟机中编译,然后运行在X86架构的32位ubuntu12.04操作系统中。

    因众所周知的缺货原因,需要变更部署条件为:基于RK3288处理器的arm板载ubuntu18.04 64位系统(以下简称“新平台”)。

    • l  处理器:瑞芯微RK3288
    • l  CPU架构Cortex-A17
    • l  CPU频率1.8GHz
    • l  GPU型号ARM Mali-T764
    • l  GPU频率600MHz
    • l  内    存64bits,DDR3L, LPDDR2, LPDDR3
    • l  操作系统:ubuntu18.04 64位

    由于硬件架构变化,以前编译的QT应用程序(以下简称“程序Q”)显然无法在新平台上直接使用,在命令行启动,返回如下错误:无法执行二进制文件: 可执行文件格式错误。

    因此需要在新平台上建立编译环境,重新编译源代码,生成可执行文件。

    由于采用QT4.8.7版本的源代码编译QT开发环境,主要工作就是围绕QT4.8.7版本的源代码编译展开,其它工作都是为了实现这个目标。

    2,安装步骤

    笔者对QT和ubuntu系统均不熟悉,经过近半个月的摸索,查阅网上资料不断实践,踩过无数坑,终于安装成功。总结为如下步骤:

    1)         安装中文语言支持。

    2)         安装vnc远程桌面。

    3)         编译QT4.8.7源代码

    4)         安装QTCreator

    5)         编译程序Q源代码

    6)         运行测试程序Q

    3,安装中文语言支持

    首先声明第一个坑,供应商提供的源千万别随意更改。

    由于大部分软件安装都通过apt进行,为提高下载速度,可能会把/etc/apt/sources.list中的源改为国内阿里或清华的源。但是注意,大部分网上公开的源都是X86架构的系统才能使用的,对于ARM架构并不适用。因此特别要注意,应坚持使用供应商给的原配配置,否则一旦更改源,apt安装软件不是找不到软件,就是出现各种错误。

    供应商给的ubuntu系统是英文语言,第一步需要安装中文支持。包括中文语言包和中文输入法两项工作。

    本人在安装中文语言包时,无法通过ubuntu系统设置界面配置成功,但通过命令行操作设置成功:

    sudo apt-get install language-pack-zh-hans
    
    sudo apt install $(check-language-support)
    
     
    
    编辑home/.bashrc 文件,加入LANG="zh_CN.utf8"

    接着安装中文输入法,步骤如下:

    1:安裝ibus框架 sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4

    2:啟動ibus框架:im-config -s ibus

    3:安裝拼音引擎:sudo apt-get install ibus-pinyin

    4:設置ibus框架:sudo ibus-setup -》在input method 里添加 剛剛加入到chinese-pinyin.

    5:添加輸入法:system settings...-》Text Entry,勾選show current input source in the menu bar前面的勾,在左面右上角就可以選擇輸入法了。

    4,安装vnc远程桌面

    先安装远程控制软件。以便操作。可参考:

    https://blog.csdn.net/kldyutou/article/details/86129634?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-1.control

    sudo apt-get install vnc4server
    
    vncserver
    
    sudo apt-get install xfce4

    编辑  home/.vnc/xstartup文件

    reboot 命令 重启操作系统, 并且重新启动vncserver 然后 vncview远程连接成功。

    5,编译前的准备

    编译QT源代码前,需要准备好gcc,g++编译工具。

    运行:

    sudo apt-get install build-essential

    然后,要调整gcc版本,系统默认的gcc和g++版本太高,为7.5,需要调整为4.8版。详见:

    https://www.freesion.com/article/7546587104/

    切换g++和gcc的版本的具体步骤:

    sudo apt-get update
    
    sudo apt-get install gcc-4.8
    
    sudo apt-get install g++-4.8
    
    sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 20
    
    sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 20

    然后运行g++ -v,如果看到版本为4.8.X,就OK了。

    然后安装X11依赖库:

    sudo apt-get install libx11-dev libxext-dev
    
    sudo apt install libxrandr-dev

    再安装mysql支持:

    sudo apt-get install libmysqlclient-dev

    再安装fontconfig支持:

    sudo apt-get install libfontconfig1-dev

    6,下载并修改QT配置

    下载地址:

    https://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz

    用tar命令解压后,位于/home/ztl/Downloads/qt-everywhere-opensource-src-4.8.7/目录。

    首先,修改/home/ztl/qt-src-4.8.7/mkspecs/linux-arm-gnueabi-g++qmake.conf文件。为何要修改这个文件呢?因为arm板的编译环境为linux-arm-gnueabi-g++,修改qmake.conf如下:

    • l  将所有arm-linux-gnueabi-g++替换为g++
    • l  将所有arm-linux-gnueabi-gcc替换为gcc

    为何要做以上修改呢?因为文件中的arm-linux-gnueabi-g++和arm-linux-gnueabi-gcc命令不存在,系统命令实际上是g++和gcc。如果不改名,在后续的操作中将出现错误。

    其次,检查代码中对QT_BUILD_KEY的定义。

    修改/home/ztl/Downloads/qt-everywhere-opensource-src-4.8.7/src/corelib/global/ qglobal.h

    将其中的#define QT_BUILD_KEY "arm linux arm-gnueabi-g++ no-pkg-config"

    一行中的arm-linux-gnueabi-g++替换为g++,修改原因同上。

    如果不修改,那么QT程序运行时可能会遇到以下错误:

    "The plugin '/usr/local/Trolltech/Qt-4.8.7/plugins/sqldrivers/libqsqlmysql.so' uses incompatible Qt library. Expected build key "arm linux g++-4 no-pkg-config", got "arm linux arm-gnueabi-g++ no-pkg-config""

    7,配置QT

    执行如下配置:

    ./configure -release -shared -fast -opensource -no-3dnow -no-openssl -no-libmng -no-opengl -no-qvfb -no-glib -no-phonon  -no-qt3support -nomake examples -nomake tools -nomake docs -nomake demos -nomake test -no-openssl -qt-sql-sqlite -qt-sql-mysql -I/usr/include/mysql -L/usr/lib/arm-linux-gnueabihf -plugin-sql-mysql -qt-libjpeg  -qt-freetype -qt-freetype -qt-libpng -platform linux-arm-gnueabi-g++ -fontconfig -confirm-license -xrender -v

    注意:

    • l  不要加入webkit和qt-zlib选项。否则后续make时出现错误。
    • l  需要webkit模块时,可以在后面单独make。
    • l  如果程序涉及中文字体,必须带参数-fontconfig
    • l  如果程序涉及SQLite3,必须带参数-qt-sql-sqlite
    • l  如果程序涉及MYSQL,必须带参数-qt-sql-mysql -I/usr/include/mysql -L/usr/lib/arm-linux-gnueabihf -plugin-sql-mysql
    • l  platform是个非常重要的参数,要根据实际情况选择。一般ARM采用linux-arm-gnueabi-g++,网上有些文章采用qws/ linux-arm-gnueabi-g++的。

     

     

    Configure执行完毕后,要留意mysql、xrender、fontconfig等选项是否enable。如果失败,必须先修改,然后再make。否则make/ make install以后,QT程序也不能正常运行。如以下是正常支持信息:

    FontConfig support ..... yes

    8,编译、安装QT

    执行 make -j4命令

    然后就是漫长的等待。

    如果没有错误导致make中止,那么就执行 make install命令,默认安装QT环境到/usr/local/Trolltech/Qt-4.8.7/目录下。

    9,单独make webkit模块

    首先要注意,以下方式产生的libQtWebKit.so文件与QT4.8.7不兼容,不能使用,必须从QT4.8.7的源码中编译才行。

    • l  系统自带的/usr/lib/arm-linux-gnueabihf/libQtWebKit.so文件
    • l  通过apt install libqtwebkit-dev安装
    • l  通过apt install libqtwebkit4安装

     

    QT支持单独make某个模块,如webkti,mysql。这样便于灵活配置需要的模块。

    Webkit模块的make非常耗时,且容易出错。

     

    首先发出配置指令:

    ./configure -opensource -confirm-license -release 
    
    -webkit 
    
    -nomake demos -nomake examples -nomake tools -nomake test -fast

     

    然后进入webkit目录

    cd /home/ztl/Downloads/qt-everywhere-opensource-src-4.8.7/src/3rdparty/webkit/Source

     

    再为webkit建立单独的make文件

    qmake WebKit.pro -r -spec /home/admin/Downloads/qt-everywhere-opensource-src-4.8.7/mkspecs/linux-arm-gnueabi-g++

     

    执行 make -j4命令

    最后,make install,在/usr/local/Trolltech/Qt-4.8.7/lib目录下就会新增libWebKit.so。

    10,安装程序Q需要的库文件

    此步骤是程序Q的需求,其它场景不一定需要。

    sudo apt install libqjson-dev
    sudo apt install libqrencode-dev

    11,安装QTCreator

    https://download.qt.io/网站上,找不到一个适合本平台使用的安装版运行文件。

    直接采用apt安装。先查看可用版本为4.5.2:

    sudo apt-cache  madison qtcreator

     

     

    再采用sudo apt-get install qtcreator直接安装

    安装完后,可以正常启动qtcreator。

    12,总结

    经过以上步骤,程序Q在新平台上可以正常编译和运行了。此处上图一张:

    总结经验如下:

    • l  遇到问题,多查资料多问多实践,“三多”帮你渡过难关。在此感谢帮助的个人和网友。
    • l  对于QT源码编译,需要非常重视准备工作。Linux系统各种环境依赖都需要手工配置。
    • l  QT的configure参数值得花时间去研究,其生成的pro,makefile等文件值得打开看看。
  • 相关阅读:
    C# UserControl集合属性使用
    类属性的几个特性的含义
    C# 绘图时使用抗锯齿会多出一个像素
    Tooltip导致的无法访问已释放对象
    C#窗口闪烁问题解决
    窗口扩展风格
    动态字段列表实现及List<T>排序
    比较好用的Copy代码到博客VS扩展工具
    Dictionary与SortedDictionary
    VS2017 15.6之后支持直接反编译了
  • 原文地址:https://www.cnblogs.com/jackkwok/p/14987130.html
Copyright © 2011-2022 走看看