Windows开发调试纯Linux代码(WSL+Qt+MobaXterm)环境搭建(超详细教程)

为何要调试Linux代码

1 学习Linux环境开发

想必很多同学都想学习Linux环境下的开发,一个是很多纯服务端程序不需要Windows这样的窗口界面。另一个纯服务端开发Linux的命令行以及脚本优势也比较明显。相反,Windows在纯服务端编程方面并没有Linux有优势。

2 嵌入式开发

在嵌入式环境下开发,板子(设备)上一主要是没有大容量的持久化存储硬件(磁盘/固态盘)。所以,不能安装Qt这种大型的集成开发环境。而且系统也是经过了大幅裁减的,都是为了减少不必要的成本(嵌入式板子的存储成本也是设备成本的一部分),这样就能给其他功能留下一点更多的空间。

降低成本就是提高竞争优势。

所以,嵌入式开发往往都是,在个人电脑上装开发调试环境,嵌入式板子上装GDB Server远程调试。

对于这种开发环境来说,QtCreator的支持是非常好的。

这里的QtCreator是一个支持CMake工程的集成开发环境,并不是用Qt开发带有界面的程序

所以我们使用QtCreator仅仅是因为,QtCreator这个集成开发环境对于这种环境支持的比较好。而不是我们在嵌入式板子上开发Qt程序。这个一定要注意!

为何是WSL

在我们上班的时候,你总是会要用微信,企业微信,飞书等办公软件。我相信绝大多数人都是在用Windows办公的,包括大部分的程序员。

除非你是只做Linux服务端开发这种极少数人的工作。否则公司应该不会给你两台电脑,一个是Windows,一个是Linux。

也就是大部分人其实即便工作中要用Linux,也是有使用Windows的需求的。

而WSL( Windows Subsystem for Linux)是在Windows上 的一个Linux子系统,它像下面这样工作:

一个Ubuntu是一个Microsoft Store上的应用

在Windows上直接进入Linux命令行

为何是Qt

我们在WSL(Ubuntu)命令行里安装Qt以及QtCreator。这样一来Qt本身就是在纯Linux环境里的。所以QtCreator可以访问所有的Linux系统库。比如,epoll pthread_create 这些Linux专有的 C 接口系统库函数。

而Visual Studio 2022 虽然也可以使用Linux 下 CMake 开发。但是我并没有成功的使用过。

目前发现本文的这种方案还是比较靠谱的。

为何是MobaXterm

在WSL安装了QtCreator之后,因为WSL是一个无界面的Ubuntu系统,所以QtCreator在WSL里运行出不来界面。需要安装MobaXterm

安装了MobaXterm之后:

MobaXterm就会识别到你本机安装的WSL:

就可以在MobaXterm里面打开Ubuntu:双击上图中的WSL-Ubuntu即可打开Ubuntu:

安装MobaXterm

下载MobaXterm

使用必应搜索 MobaXterm,第一个就是:

安装免费版即可:

下载安装版

下载地址:

MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Home Edition (mobatek.net)

下载 Installer 版本。

一路傻瓜安装即可。

WSL安装

下面的这篇文章是我的CSDN,这一篇文章全部搞定安装WSL的所有细节:

WSL安装与使用_wsl命令安装_C++开发者的博客-CSDN博客

保证你一次成功!

Qt安装在WSL上

这一步非常简单,只需要在你的WSL里输入并依次执行下面的这些命令即可。

部分命令需要你输入Y或者y表示同意安装。

这些命令就是:

sudo apt-get update
sudo apt-get install build-essential cmake
sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools
sudo apt-get install qtcreator
sudo apt-get install qt5*

在MobaXterm中启动QtCreator

打开MobaXterm:

双击WSL-Ubuntu:

输入qtcreator :注意是小写

大功告成!

共享文件开发

这时候你可以浏览你本机Windows上的文件夹来开发。非常方便!

(WSL默认把/mnt映射到了Windows的各个盘的跟目录!太人性化了!)

跑一个 Linux Hello World 代码

按照上面的操作打开一个Windows本地的CMake工程之后,点击 Configure Project:

点击 调试运行:

运行输出:

跑一个 Linux epoll 最简示例代码

浏览本地文件夹中的CMakeLists.txt

先选择启动项(因为我这个CMakeLists.txt里有多个可执行程序):

再调试运行:

开始你的 Windows 上的 Linux 开发之旅吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/116849.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java内存模型讨论及案例分析

常用内存选项 -Xmx: 最大堆大小 -Xms:最小堆大小 -Xss :线程堆栈大小,默认1M 生产环境最好保持 Xms Xmx java内存研究 内存布局 可见: 堆大小 新生代 老年代,新生代EFrom SurvivorTo Survivor。新…

Maven入门教程(三):Maven语法

视频教程:Maven保姆级教程 Maven入门教程(一):安装Maven环境 Maven入门教程(二):idea/Eclipse使用Maven Maven入门教程(三):Maven语法 Maven入门教程(四):Nexus私服 Maven入门教程(五):自定义脚手架 6.Mav…

【vue】this.$nextTick解决this.$refs undefined的问题

说明 1、发邮件页面分成两个部分:模态框页面(头部和底部)和form页面(操作按钮) 2、点击回复按钮,要将发件人信息带到模态框页面,给定默认值且禁止收件人下拉选择(多个邮箱&#xff…

数据库(MySQL)的存储过程

一、存储过程介绍 存储过程是事先经过编译并存储在数据库中的一段SQL 语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。 存储过程思想上很简单&#xff0…

基于白鲸算法优化的BP神经网络(预测应用) - 附代码

基于白鲸算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于白鲸算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.白鲸优化BP神经网络2.1 BP神经网络参数设置2.2 白鲸算法应用 4.测试结果:5.Matlab代码 摘要…

探索在云原生环境中构建的大数据驱动的智能应用程序的成功案例,并分析它们的关键要素。

文章目录 1. Netflix - 个性化推荐引擎2. Uber - 实时数据分析和决策支持3. Airbnb - 价格预测和优化5. Google - 自然语言处理和搜索优化 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专…

Leetcode110. 平衡二叉树

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 题解&#xff…

工控上位机程序为什么只能用C语言?

工控上位机程序并不只能用C#开发,实际上在工业自动化领域中,常见的上位机开发语言包括但不限于以下几种:C#: C#是一种常用的编程语言,在工控领域中被广泛使用。它具有良好的面向对象特性和丰富的类库支持,可以实现高性…

MySQL - 函数

1 什么是函数? 要想实现上面的这些效果,就得借助于MySQL当中的内置函数。 函数:是指一段可以直接被另一段程序调用的程序或代码。 MySQL当中内置了很多的函数,根据其操作的数据类型,分为以下四类: 字符串…

pdf转换成图片免费软件用哪个?pdf转换成图片就用它

随着技术的发展,现在企业办公运用到的电子文档各种各样,我们日常需要掌握的技能越来越高要求,其中pdf和图片是我们经常接触的文件格式之一,而且这两个文件格式我们会经常将它们进行转换,那么pdf转换成图片怎么操作呢?…

六、Kafka-Eagle监控

目录 6.1 MySQL 环境准备6.2 Kafka 环境准备6.3 Kafka-Eagle 安装 6.1 MySQL 环境准备 Kafka-Eagle 的安装依赖于 MySQL,MySQL 主要用来存储可视化展示的数据 6.2 Kafka 环境准备 修改/opt/module/kafka/bin/kafka-server-start.sh 命令 vim bin/kafka-server-sta…

鸿蒙系列-如何使用好 ArkUI 的 @Reusable?

如何使用好 ArkUI 的 Reusable? OpenHarmony 组件复用机制 在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为 系统组件,由开发者定义的称为 自定义组件。 在进行 UI 界面开发时,通常不是简单的将系统组件进行组合…

网站搭建最简化的引导操作 | 云服务器的购买选用 | 域名的选用 | 网站的上线和备案。

本文章面向对象为网站搭建的初次操作者,主要是一些自主使用的网站,为小白做为引导的教程。 一, 网站搭建的流程 1,服务器的租赁 2,购买域名 3,对域名进行备案 4,网站内部的搭建,上线…

音视频开发常用工具

文章目录 前言一、VLC 播放器1、简介2、下载3、VLC media player4、VLC 打开网络串流5、VLC 作为流媒体服务器①、搭建 RTSP 流媒体服务器②、新建播放器 二、MediaInfo1、简介2、下载3、MediaInfo①、主界面②、主要功能特点③、使用方法④、Mediainfo 相关参数和含义简介 三、…

uniapp热更新

首先热更新需要wgt包; 其次先了解这两个组件 下载的方法 安装的组件 场景: 当你项目的js文件或者页面文件或者静态图片文件css文件更新的时候可以走热更新; 而当你安装新的组件插件或者开启新的权限等功能的时候就无法通过热更新进行更新了…

数据结构入门 — 队列

本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…

开发指导—利用CSS动画实现HarmonyOS动效(一)

注:本文内容分享转载自 HarmonyOS Developer 官网文档 一. CSS 语法参考 CSS 是描述 HML 页面结构的样式语言。所有组件均存在系统默认样式,也可在页面 CSS 样式文件中对组件、页面自定义不同的样式。请参考通用样式了解兼容 JS 的类 Web 开发范式支持的…

002图的基本概念与表示方法

文章目录 一. 图的组成二. 本体图2.1 什么是本体图2.2 怎么设计本体图 三. 图的种类3.1 按连接是否有向分3.2 按本体图分3.3 按连接是否带权重分 四. 节点连接数(节点的度)4.1 无向图节点的度4.2 有向图节点的度 五. 图的表示方法5.1 邻接矩阵5.2 连接列…

【ES6】Promise.all用法

Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。 const p Promise.all([p1, p2, p3]);上面代码中,Promise.all()方法接受一个数组作为参数,p1、p2、p3都是 Promise 实例,如果不是,就会先调…

新版Mongodb(6.0以上)找不到mongo.exe

安装目录下/bin目录中,没有mongo.exe文件,只有mongod和mongos,以及一个powershell命令脚本。 原因在于,mongodb6.0以后做出了重大改变,mongodb已经不再默认为你安装shell工具,因此需要安装一个额外的shell…