Ubuntu搭建Qt环境

2023-11-04

1 ubuntu搭建qt环境的好处

ubuntu上可以安装qtcrater,然后一键下载到板子上,不需要手动编译;

2 安装linux版本的qtcreater

注意,必须要先安装g++再安装qtcreater,否则会出问题!!!

下载g++编译器

sudo apt-get install aptitude 

#aptitude比apt-get强大,因为它会自动搜索被下载软件的依赖包,然后
#并把它们一起下载下来;

sudo aptitude install g++

注意,第一个弹出来的选项选n
第二个才选y

安装ssh
ssh是一种远程登录控制台的工具,也就是可以通过网络登录设备的控制台;
同样作用的工具还有telnet,
telnet和ssh的区别:
telnet是明文传输,ssh加密传输;

sudo apt-get install ssh

安装libgl,否则在ubuntu执行qt时会提示: can’t not find -lGL
参考网页:
https://blog.csdn.net/u013066730/article/details/60467159

第一种解决方法:

sudo apt-get install libgl1-mesa-dev

第二种解决方法:

sudo ln -s /usr/lib/x86_64-linux-gnu/mesa/libGL.so.1.2.0 /usr/lib/libGL.so

首先你要下载安装包,下载的网址:
http://download.qt.io/archive/qt/?tdsourcetag=s_pcqq_aiomsg
在这里插入图片描述

注意,不要在32位Linux上安装,因为32位的Linux不能安装,必须要用64位的linux;

然后把安装包放到Linux中:

执行安装命令:

sudo ./qt-opensource-linux-x64-5.11.1.run 

#注意,一定要用sudo,否则会出问题
在这里插入图片描述

安装好后如何打开:
第一种方法:
点击左下角菜单 -> 编程 -> Qt Creater

第二种的方法:
直接在安装目录下运行qtcreater命令
我们是安装在/opt下
/opt/Qt5.11.1/Tools/QtCreator/bin/qtcreator

3 配置一键下载到板子上

如果你板子上的文件系统是busybox,首先要交叉编译ssh,假如你板子上的系统是ubuntu或者debian,就可以直接

apt-get install ssh

busybox是一个 “命令瑞士军刀”,它把诸如ls.cd,rm,cp…一系列命令都编译成一个独立的可执行文件 -> 文件名就叫做busybox,

busybox的优点是非常的小,功能还不错

因为我们的文件系统是busybox的,所以需要交叉编译ssh;

3.1 交叉编译ssh

OpenSSH 源码获取
这里我们一共需要移植三个软件包: zlib、 openssl 和 openssh。依次到这三个软件的官网下
载对应的源码,官网如下:
zlib 官网: http://www.zlib.net/
openssl 官网: https://www.openssl.org/source/
openssh 官网: http://www.openssh.com/

3.1.1 移植 zlib 库

tar -vxzf zlib-1.2.11.tar.gz //解压

解压完成以后得到一个名为“zlib-1.2.11”的 zlib 源码文件。另外新建一个名为“zlib”的
文件夹来保存 zlib 的编译结果。进入 zlib 源码目录,然后配置并编译,命令如下:

cd zlib-1.2.11/ //进去 zlib 源码
CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihfas ./configure --prefix=/home/song/linux/IMX6ULL/tool/zlib //配置
make //编译
make install

将zlib中的 lib 目录下的 zlib 库文件拷贝到开发板根文件系统的/lib 目录下

3.1.2 移植ssl

tar -vxzf openssl-1.1.1d.tar.gz

解压完成以后就会生成一个名为 openssl-1.1.1d 的目录,然后在新建一个名为“openssl”的文件夹,用于存放 openssl 的编译结果。进入到解压出来的 openssl-1.1.1d 目录中,然后执行如
下命令进行配置:

./Configure linux-armv4 shared no-asm --prefix=/home/song/linux/IMX6ULL/tool/openssl
CROSS_COMPILE=arm-linux-gnueabihf-

上述配置中“ linux-armv4”表示 32 位 ARM 凭条,并没有“ linux-armv7”这个选项。
CROSS_COMPILE 用于指定交叉编译器。配置成功以后会生成 Makefile,输入如下命令进行编译:

make
make install

编译并安装成功的 openssl 目录中的 lib 目录是我们需要的,将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下,命令如下:

sudo cp libcrypto.so* /home/song/linux/nfs/rootfs/lib/ -af
sudo cp libssl.so* /home/song/linux/nfs/rootfs/lib/ -af

3.1.3 移植 openssh 库

3.1.3.1 交叉编译 openssh 库

先解压 openssh 源码,命令如下:

tar -vxzf openssh-8.2p1.tar.gz

解压完成以后就会生成一个名为“openssh-8.2p1”的文件夹,进入此文件夹里面,然后配置并编译 openssh,命令如下:

cd openssh-8.2p1/
./configure --host=arm-linux-gnueabihf --with-libs --with-zlib=/home/song/linux/IMX6ULL/tool/zlib --with-ssl-dir=/home/song/linux/IMX6ULL/tool/libopenssl --disable-etcdefault-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar //配置
make //编译

在配置 openssh 的过程中,“–with-zlib”参数用于指定 zlib 库所在的目录,“–with-ssl-dir”
参数用于指定 openssl 库所在的目录,编译 openssh 的时候不用“make install”。

3.1.3.2 将 openssh 相关文件拷贝到开发板中

openssh 交叉编译完成以后在开发板中创建如下所示目录(如果存在的话就不需要创建):

/usr/local/bin
/usr/local/sbin
/usr/local/libexec
/usr/local/etc
/var/run
/var/empty

创建命令如下:

mkdir /usr/local/bin -p
mkdir /usr/local/sbin -p
mkdir /usr/local/libexec/ -p
mkdir /usr/local/etc -p
mkdir /var/run -p
mkdir /var/empty/ -p

上述目录创建好以后将如下文件拷贝到开发板的/usr/local/bin 目录下:

scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan

将如下文件拷贝到开发板的/usr/local/sbin 目录下:

sshd

将如下文件拷贝到开发板的/usr/local/etc 目录下:

moduli ssh_config sshd_config

将如下文件拷贝到开发板的/usr/local/libexec 目录下:

sftp-server ssh-keysign

创建软连接,进入开发板中的/bin 目录下,输入如下命令创建软连接:

cd /bin/
ln -s /usr/local/bin/scp
ln -s /usr/local/bin/sftp
ln -s /usr/local/bin/ssh
ln -s /usr/local/bin/ssh-add
ln -s /usr/local/bin/ssh-agent
ln -s /usr/local/bin/ssh-keygen
ln -s /usr/local/bin/ssh-keyscan

再进入开发板的/sbin 目录下,输入如下命令创建软连接:

cd /sbin/
ln -s /usr/local/sbin/sshd

3.2 交叉编译qt库

build.sh:

!/bin/bash
  ./configure -opensource \
          -confirm-license \
          -little-endian \
          -prefix /opt/Qt-4.8.7-nuc972 \
          -silent \
          -shared \
          -release \
          -embedded arm \
         -xplatform qws/linux-arm-g++  \
         -platform qws/linux-x86-g++ \
         -webkit \
         -qt-gfx-transformed \
         -qt-libtiff \
         -qt-libmng  \
         -qt-mouse-tslib \
         -qt-mouse-pc \
         -no-mouse-linuxtp \
         -no-neon \
         -nomake tools \
         -qt-libjpeg \
         -qt-libpng \
         -qt-zlib \
         -I /opt/tslib-nuc972/include \
         -L /opt/tslib-nuc972/lib

开发板原厂送的qt4.8.6使用不了的,因为它的编译环境是32位的机器,和我们的不符合,所以他的用不了;

增加env-qt4.sh

#!/bin/sh

export set QTDIR=/opt/Qt-4.8.7-nuc972/             
export set LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export set PATH=$QTDIR/bin:$PATH   
export set QT_QWS_FONTDIR=$QTDIR/lib/fonts
export QWS_MOUSE_PROTO="TSLIB:/dev/input/event0 Intellimouse:/dev/input/mouse1" 
#export set QWS_DISPLAY='/dev/fb0'
export QT_PLUGIN_PATH=$QTDIR/plugins

把中文字库加入qt的字体目录:
随便找一个ttf字体文件,放到/opt/Qt-4.8.7-nuc972/lib/fonts/

修改/etc/profile,让它开机自动执行qt脚本:

vi /etc/profile

加入:

source /opt/env-qt4.sh

重启:

reboot

测试qt库是否移植成功:

/opt/Qt-4.8.7-nuc972/examples/mainwindows/dockwidgets/dockwidgets -qws

3.3 在qtcreaeter中增加远程调试设备

先增加arm-linux-gcc套件
在这里插入图片描述

增加一个编译工具套件:
这个编译工具套件其实就是我们的Qt-4.8.7里的qmake

在qt工程的pro文件要增加安装路径:
远程调试qt的原理是把qt执行文件传输到板子的指定目录上,然后就运行它

target.path = /home/root
INSTALLS += target

因为我们的工程创建时,nuc972-qmake是没有的,所以我们要手动激活,并加入参数
-qws

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu搭建Qt环境 的相关文章

随机推荐

  • JS 简单实现电子时钟

    时钟的确是非常简单的一个功能 我们只需要通过js编写一个方法来获取时间的时分秒 再用定时器每隔一秒进行刷新即可 注意 通过Date类拿到的时分秒直接拼接起来可能是这样的 8 2 3 而我们想看到的效果应该是 08 02 03 所以这里我们会
  • 对于区块链,各个国家对它又是一种什么态度呢?

    在这场席卷全球的区块链技术 数字资产变革中 区块链作为一种颠覆性的技术 它的出现对各国政府提出了新的问题 对于这个问题 各国政府给出了怎样的答复 区块链在各国发展的政策环境又如何 并且我们除了要了解本国的立场之外 也需要掌握其他国家的态度
  • 谁发明了区块链?谁是中本聪?

    区块链技术首次在由中本聪 Satoshi Nakamoto 撰写的题为 比特币 对等电子现金系统 的论文中介绍 在这篇文章中 中本聪描述了区块链技术的基础 所有区块链创新都可以追溯到中本聪 他是区块链和比特币的发明者 但是 谁是中本聪 没人
  • 使用vscode搭建vue项目并引用element-ui

    1 环境准备 Visual studio code nodejs vue cli yarn 2 新建项目 1 打开Visual studio code 打开一个你想要创建项目的文件夹 2 打开集成终端如下图所示或者使用快捷键 3 在终端中输
  • LevelDB.NET 使用

    LevelDB是google实现的非常高效的kv数据库 多数是和redis比较 这里记录下如何使用 新建项目 Nuget添加类库 通过反编译发现运行时是 NET 4 0 这里我用4 5测试需要选择64位平台 代码 写数据 db Put Wr
  • python3排序 sorted(key=lambda)

    python3排序sorted key lambda 当待排序列表的元素由多字段构成时 我们可以通过sorted iterable key reverse 的参数key来制定我们根据那个字段对列表元素进行排序 key lambda 元素 元
  • 【华为OD统一考试B卷

    华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一修改为OD统一考试 A卷 和OD统一考试 B卷 你收到的链接上面会标注A卷还是B卷 请注意 根据反馈 目前大部分收到的都是
  • StringBuilder.append()与String的"+"的效率PK

    如果String通过 来拼接 如果拼接的字符串是常量 则效率会非常高 因为会进行编译时优化 这个时候StringBuilder的append 是达不到的 如果将String的 放在循环中 会创建很多的StringBuilder对象 并且执行
  • 信贷风控中Vintage、滚动率、迁移率的理解

    风控业务背景 信贷风险管理是一门艺术 更是一门科学 资产质量分析中常会涉及到三个理论 账龄分析 Vintage Analysis 用以分析账户成熟期 变化规律等 滚动率分析 Roll Rate Analysis 用以定义账户好坏程度 迁移率
  • 未解决,fsmgmt.msc共享文件夹管理中,文件夹无属性选项

    之前用的win10家庭版 都没有fsmgmt msc 现在升级成专业版发现没有属性 https jingyan baidu com article 358570f69e9b13ce4724fce9 html 我的电脑
  • windows下redis设置redis开机自启动方法

    1 查看一下Redis服务是否注册 1 Win R快捷键输入services msc 然后回车或者点击确定 2 win10桌面 此电脑 右键单击 管理 gt 服务与应用程序 gt 服务 此处输入R 即可看到R开头的服务列表 在没有添加服务的
  • IDEA+Springboot+Git+jenkins+tomcat实现自动部署-基本流程

    jenkins构建 前言 测试项目准备 一 jenkins构建一个新项目 把Gitee仓库的项目获取到本地打包运行 二 jenkins构建一个新项目 把Gitee仓库的项目获取到本地打包 通过Publish Over SSH传输到另外一台机
  • 《在IDEA中配置MySQL的驱动程序》

    一 下载mysql connecter 下载地址 http dev mysql com downloads connector j 具体步骤已在下图中标注 注意是下载zip压缩包格式 因为解压缩安装很方便 下载完成后得到压缩包如下 二 安装
  • 深度详解ResNet到底在解决一个什么问题?

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 https www zhihu com question 64494691 本文仅作为学术分享 如果侵权 会删文处理 最近看到不少ResNet的变体 比如ResNeSt
  • 【软考】-高项-整合管理-重要知识点思维导图

    整合管理 文章目录 整合管理 含义 内容 项目管理计划 含义 组件 开工 会议 分类 目的作用 如何召开高效会议 批准的变更请求 可交付成果 工作绩效数据 变更的流程 1 提出与记录变更申请 2 初审变更 初审目的 常见方式为变更申请文档的
  • 实例分割模型Mask R-CNN详解:从R-CNN,Fast R-CNN,Faster R-CNN再到Mask R-CNN

    Mask R CNN是ICCV 2017的best paper 彰显了机器学习计算机视觉领域在2017年的最新成果 在机器学习2017年的最新发展中 单任务的网络结构已经逐渐不再引人瞩目 取而代之的是集成 复杂 一石多鸟的多任务网络模型 M
  • React黑马视频自学笔记02

    14 react事件处理 14 1事件绑定 语法 on 事件名称 事件处理程序 比如 onClick gt 注意 React事件采用驼峰命名法 比如 onMouseEnter onFocus 函数组件绑定事件的时候不用this 14 2事件
  • 监控Oracle(oracledb_exporter)

    我们以监控Oracle为例 目前仅有x86版本 可以下载源码针对不同环境使用golang环境自己编译 监控什么指标下载对应系统的exporter插件 统一下载地址 https prometheus io download 监控指标对应的gr
  • 解决实际问题的ES6代码段

    1 如何隐藏所有指定元素 const hide el gt el forEach e gt e style display none Example hide document querySelectorAll img 隐藏页面上的所有 元
  • Ubuntu搭建Qt环境

    1 ubuntu搭建qt环境的好处 ubuntu上可以安装qtcrater 然后一键下载到板子上 不需要手动编译 2 安装linux版本的qtcreater 注意 必须要先安装g 再安装qtcreater 否则会出问题 下载g 编译器 su