ubuntu配置qtcreator交叉编译超简单

环境说明:

宿主机环境:ubuntu16.04, 交叉编译链:armv7-rpi2-linux-gnueabihf,Qt版本5.12.12。

目标设备:树莓派4B,armv7硬浮点操作系统。

配置过程:

一. 交叉编译适合树莓派的QT

见这篇交叉编译树莓派QT

二. 配置QtCreator

1. 宿主机下运行qtcreator,点击顶部菜单【Tools】,选择子菜单【Options】,如下图:

2. 进入如下界面:

3. 添加交叉编译的编译器

3.1 点击上图中左侧第一个菜单【Kits】。点击右侧菜单【Compilers】,进入下图:

3.2 点击右侧【Add】,进入下图:

3.3 添加C编译器

在上面的GCC选项下选择C,进入下图:

此时没有任何配置,所以上图中红圈部分出现红色感叹号。下面我们来进行具体配置:

将Name:GCC改为ARMV7_GCC,以免和qtcreator自带的混淆;

在CompilerPath中选择或者输入搭建好的树莓派交叉编译链的路径,我这里填入的是:/home/user/x-tools/armv7-rpi2-linux-gnueabihf/bin/armv7-rpi2-linux-gnueabihf-gcc如何搭建树莓派交叉编译链看这篇https://mp.youkuaiyun.com/mp_blog/creation/editor/145721220

点击底部按钮【Apply】。

具体配置如下图:

3.4 添加C++编译器

在上面的GCC选项下选择C++,进入下图:

此时没有任何配置,所以上图中红圈部分出现红色感叹号。下面我们来进行具体配置:

将Name:GCC改为ARMV7_G++,以免和qtcreator自带的混淆;

在CompilerPath中选择或者输入搭建好的树莓派交叉编译链的路径,我这里填入的是:

 /home/user/x-tools/armv7-rpi2-linux-gnueabihf/bin/armv7-rpi2-linux-gnueabihf-g++如何搭建树莓派交叉编译链看这篇https://mp.youkuaiyun.com/mp_blog/creation/editor/145721220

点击底部按钮【Apply】即可完成。

具体配置如下图:

4.  配置QtVersions

点击上图中右侧的【Add】按钮,打开下图:

选择你宿主机编译好的树莓派QT,我这里是

/opt/qt5.12-armv7-rpi2-host/bin/qmake

如何交叉编译适合树莓派的QT看这篇https://mp.youkuaiyun.com/mp_blog/creation/editor/145732868

点击底部按钮【Apply】完成此部分的步骤,如下图:

上图中的黄色感叹号不用理会,直接无视。

5. 配置Kits

点击右侧菜单【Add】,进入下图:

我们开始进行配置:

Unnamed改为ARMV7;

Compiler: C改为上述3.3中配置好的ARMV7_GCC;

Compiler: C++改为上述3.4中配置好的ARMV7_G++;

Qt Version改为上述4中配置好的qt5.12-armv7-rpi2-host那个;

最终配置如下图:

上图中出现黄色感叹号直接无视。到这里配置就完成了。

三. 测试

新建一个QT qt widgets项目:qt_cross_demo ,注意编译环境选择为上述配置好的ARMV7,如下图:

main.cpp中代码如下:

#include "mainwindow.h"
#include <QApplication>
#include <wiringPi.h>
#include <iostream>


int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

   if (wiringPiSetupGpio() == -1) {
       std::cerr << "无法初始化WiringPi!" << std::endl;
       return 1;
   }
   else{
       std::cerr << "初始化WiringPi成功!" << std::endl;
   }

    return a.exec();
}

.pro文件中需要增加树莓派GPIO库的链接(倒数第7行,你需要确保你的libwiringPi.so位于此位置),完整内容如下:

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui


unix:!macx {

        LIBS += -L/home/user/sysroot/lib -lwiringPi
}

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

然后执行编译,将编译好的可执行程序推送到树莓派,最终树莓派运行结果如下:


到此整个配置就完成了。终于可以在宿主机上痛快的进行树莓派程序开发了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值