Firefly开源社区

12
发表新贴
打印 上一主题 下一主题

RK3288交叉编译Qt5源代码,并用QtCreator开发嵌入式UI

264

积分

6

威望

5

贡献

技术达人

Rank: 2

积分
264
QQ

RK3288交叉编译Qt5源代码,并用QtCreator开发嵌入式UI

发表于 2017-6-27 13:30:37      浏览:41781 | 回复:11        打印      只看该作者   [复制链接] 楼主
本帖最后由 luwanjia 于 2017-9-21 15:49 编辑

系统版本:
当期PC系统版本:Linux zorinos 4.8.0-56-generic #61~16.04.1-Ubuntu SMP Wed Jun 14 11:58:22 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
RK3288开发板: kernel4.4.55+Xubuntu16.04 (基于官方Firefly-rk3288_Ubuntu_16.04_201705250940.img修改,只是把其内核替换成了kernel4.4.55,因为默认VGA输出不支持)

1. 安装交叉编译器
    $sudo apt-get install gcc-arm-linux-gnueabihf
    $sudo apt-get install g++-arm-linux-gnueabihf

    (能用apt-get直接安装成功的跳过后面步骤)
    如果无法用apt-get安装,提示:Unable to locate package gcc-arm-linux-gnueabihf, 你需要单独下载交叉编译器,这里用的gcc5.4。
    $wget -c https://releases.linaro.org/comp ... ux-gnueabihf.tar.xz

    手动安装arm-linux-gnueabihf:
    $tar -xvf gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz
    $mv gcc-linaro-5.4.1-2017.05-x86_64_arm-linux-gnueabihf arm-linux-gnueabihf-5.4.1 // 这里只不过是根据自己喜好重命名
    $sudo cp -rf arm-linux-gnueabihf-5.4.1 /opt  // 这个路径也是自定义的,后面把环境变量配成一致就行

    修改用户目录下面的".bashrc"文件,在最后追加:PATH=$PATH:/opt/arm-linux-gnueabihf-5.4.1/bin
    执行以下命令立即生效:
    $source ~/.bashrc
    然后测试是否安装成功:
    $arm-linux-gnueabihf-gcc -v
  
2. Qt5源代码下载及openssl配置
    1> 选择版本Qt5.5.1
        为啥不选择其他更高版本? 负责任的告诉大家,编译不过!!! 目前尝试5.8和5.9都编译失败,很想吐槽Qt官方所谓的发布版本,其他版本还没有尝试。另一个原因就是RK3288开发板上面的libQt5Core.so的版本是5.5.1, 当然要版本一致才行,至于版本不一致会有什么问题,俺也不晓得。
        下载链接:http://download.qt.io/archive/qt ... ce-src-5.5.1.tar.xz
        建议:代码解压后最好在本地用git管理起来,这样方便还原以及清理。想重新编译只需要git clean -df就可以还原,非常方便。给git一个赞!

    2> 下载编译openssl
        Qt5.5.1的编译需要使用openssl库,用最新的openssl版本会有问题,一些定义找不到,这里用的是OpenSSL_1_0_1版本。

        a) 下载源代码
            $git clone https://github.com/openssl/openssl.git

        b) 获取OpenSSL_1_0_1版本的代码:
            $git checkout -b local_OpenSSL_1_0_1 OpenSSL_1_0_1
            (可以使用git tag -l查看openssl发布的所有版本号)

        c) 配置openssl
            $mkdir arm-openssl arm-ssl // 如果目录存在请删之或者清空,用于make install
            $cd openssl
            $setarch i386 ./config no-asm no-shared enable-ssl3 enable-ssl3-method --prefix=$PWD/../arm-openssl --openssldir=$PWD/../arm-ssl --cross-compile-prefix=arm-linux-gnueabihf-

        d) 编译
            $make // 如果提示-m32错误,请修改当前目录下面的Makefile文件,全局搜索-m32, 删除掉即可。然后重新make
            $make install

        e) 顺利的话,在arm-openssl目录中会生成相应的头文件和静态链接库。arm-ssl目录下面也会生成一些东西,暂时没用到,忽略。

        f) 分别复制openssl头文件和静态库文件到arm-linux-gnueabihf的include目录和和lib目录下,主要是方便之后编译直接链接,不需要修改make选项。当然,每个人的处理方式不一样,此步骤仅供参考。
            $cd arm-openssl
            $sudo cp -rf include/openssl /usr/arm-linux-gnueabihf/include/
            $sudo cp -rf lib/lib* /usr/arm-linux-gnueabihf/lib/
            (以上路径请根据编译器安装情况具体确定,请自行修改)

    到此,你已经具备了编译Qt5.5.1的一切条件,开工吧!

3. 编译Qt5.5.1
    1> 定义Qt5.5.1的SDK路径
        该路径非常重要,之后你的Qt5 SDK就会安装在此路径下,需要编译前配置好,否则路径不对导致之后Qt Creator无法正常使用此SDK。
        这里定义SDK路径为:/opt/qt-5.5.1-arm
        $sudo mkdir /opt/qt-5.5.1-arm

        (你可以根据自己喜好定义,但是编译完成后,如果需要移动到其他电脑上,你必须把SDK放在同样的目录下面)

    2> 修改qmake.conf文件
        $gedit qt-everywhere-opensource-src-5.5.1/qtbase/mkspecs/linux-arm-gnueabi-g++/qmake.conf
        将所有arm-linux-gnueabi都改成arm-linux-gnueabihf,如下:
        #
        # qmake configuration for building with arm-linux-gnueabihf-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)


        # 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)

    3> 执行Configure
        $cd qt-everywhere-opensource-src-5.5.1
        $./configure -prefix /opt/qt-5.5.1-arm -opensource -nomake tests -nomake examples -opensource -xplatform linux-arm-gnueabi-g++
        注意:-prefix选项后面的路径就是上一步中定义的SDK路径

    4> 编译
        $make -j4
        (这里要编译好久,慢的话估计得编译个把小时,先干点别的去吧!)

    5> 安装
        $sudo make install
        (第1步定义的SDK路径需要root权限访问,请以root权限安装)

    到此,你的SDK就编译完成了。

4. 使用Qt Creator进行嵌入式开发
    1> 下载Qt Creator
        $wget -c http://download.qt.io/official_r ... ux-x86_64-4.3.0.run
        $sudo chmod +x qt-creator-opensource-linux-x86_64-4.3.0.run
        $sudo ./qt-creator-opensource-linux-x86_64-4.3.0.run

    2> 配置Qt Creator的交叉编译器及Qt Version
        a) 启动Qt Creator
        b) 选择[Tools]-[Options]-[Build & Run]
        c) 配置Qt Versions,如图:
            
        d) 配置Kits,如图
            
        e) 配置编译器,如图
            
            
      
    3> 新建测试程序
        a) 创建UI测试程序,如图:
            
        b) 将编译好的可执行文件复制到开发板上运行
            运行之前,请在开发板上安装Qt5:
            $sudo apt-get install qt5-default
            (开发板上已经有firefly定制的libQt5Core.so库,安装完qt5-default之后,qt5相关的程序就能直接运行了)

            效果图:
            

    4> 编译好的Qt5 SDK分享
        链接: https://pan.baidu.com/s/1dEHm4GL 密码: nni3

        请解压到/opt目录,然后Qt Creator就可以配置它了。
   
5. 整个教程到此结束

已有 1评分威望 +5 灯泡 +5 贡献 +5 收起 理由
leeonshih + 5 + 5 + 5 赞一个!

查看全部评分

回复

使用道具 举报

16

积分

0

威望

0

贡献

游客

积分
16
发表于 2017-8-10 10:15:32        只看该作者  沙发
好帖,支持下,一直想做没时间做,好多界面性的软件需要用到qt,谢谢!
回复

使用道具 举报

47

积分

0

威望

0

贡献

技术小白

积分
47
发表于 2017-9-20 11:02:19        只看该作者  板凳
你好,楼主,想请教一下, 编译的Qt5.5可以支持 opengl么?
回复

使用道具 举报

264

积分

6

威望

5

贡献

技术达人

Rank: 2

积分
264
QQ
发表于 2017-9-21 15:49:08        只看该作者  地板
leeonshih 发表于 2017-9-20 11:02
你好,楼主,想请教一下, 编译的Qt5.5可以支持 opengl么?

不清楚,就是opengl es吧,没研究过
回复

使用道具 举报

132

积分

0

威望

0

贡献

技术小白

积分
132
发表于 2018-2-27 15:02:00        只看该作者  5#
正好是我需要的,多谢!
回复

使用道具 举报

87

积分

0

威望

0

贡献

技术小白

积分
87
发表于 2018-5-18 15:08:56        只看该作者  6#
编译好的Qt5 SDK分享
        链接: https://pan.baidu.com/s/1dEHm4GL 密码: nni3
楼主,编译好的QT5 SDK能够再分享一下么,以上链接资源已经被删除了
回复

使用道具 举报

264

积分

6

威望

5

贡献

技术达人

Rank: 2

积分
264
QQ
发表于 2018-5-28 11:43:49        只看该作者  7#
RICHYDUAN 发表于 2018-5-18 15:08
编译好的Qt5 SDK分享
        链接: https://pan.baidu.com/s/1dEHm4GL 密码: nni3
楼主,编译好的QT5 SD ...

我也找不到了,自己编译呗
回复

使用道具 举报

25

积分

0

威望

0

贡献

技术小白

积分
25
QQ
发表于 2019-1-28 16:43:45        只看该作者  8#
不知道为什么交叉编译的程序,在板子上运行,出现这个错误

qterror.png (51.63 KB, 下载次数: 1871)

qterror.png
回复

使用道具 举报

15

积分

0

威望

0

贡献

技术小白

积分
15
发表于 2019-10-13 22:35:30        只看该作者  9#
请问arm版本的qmake 是怎么编译出来的?我用arm-linux-g++ 编译出来的qmake ABI 是x86版本的
我的qq 807885535
回复

使用道具 举报

24

积分

0

威望

0

贡献

技术小白

积分
24
发表于 2019-12-11 16:47:44        只看该作者  10#
大神 ,这个不需要安装tslib么
回复

使用道具 举报

返回列表
12
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

友情链接 : 爱板网 电子发烧友论坛 云汉电子社区 粤ICP备14022046号-2
快速回复 返回顶部 返回列表