轻松玩转树莓派Pico之三、Windows+Ubuntu虚拟机模式下VSCode C语言开发环境搭建

news2025/1/11 0:26:01

目录

1、VSCode下载与安装

2、VSCode基础插件安装

3、SSH连接与配置

4、SSH免密登录

5、Pico编译


工欲善其事,必先利其器。之前的介绍的Pico流程都是通过命令行编译,没有进行更深入的介绍,本文将介绍Pico的VSCode-C语言开发环境搭建与配置。

VS Code全称Visual Studio Code,是微软研发的一款免费、开源的轻量级代码编辑器,支持语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比等特性。软件跨平台,可在 WinMac 以及 Linux桌面上安装运行。内置了对 JavaScriptTypeScript Node.js 的支持,同时可通过插件支持包括C/C++C#JavaPythonPHPGo等几乎所有编程语言。

嵌入式开发进行交叉编译,较多采用GCC编译器,从事嵌入式开发又无法完全脱离Windows系统,所以较多开发方式采用的是Windows主机+VMware安装Ubuntu虚拟机的开发方式。在Windows下编辑代码,在Linux下编译代码。

本文通过VSCode提供的一系列插件,搭建C语言开发/交叉编译环境。

1、VSCode下载与安装

在VSCode官网Visual Studio Code - Code Editing. Redefined选择对应的操作系统进行下载,当前开发模式选择的是Windows操作系统。

安装完成后,点击桌面上的“Visual Studio Code”即可运行。

2、VSCode基础插件安装

就像大多数 IDE一样,VSCode 也有一个扩展和主题市场,包含了数以千计质量不同的插件。可在VSCode“扩展”/“Extensions”页面中选择需要的插件。

下面推荐几款C/C++开发中常用的插件:

1)Remote-SSH (Microsoft):当前开发模式下必须安装

允许您使用任何带有SSH服务器的远程计算机作为开发环境。

安装完插件之后,VSCode 就具备了连接远程主机的能力。在左下角有个符号 >< ,点击它就能选择连接哪个远程主机。连接上了之后,会重新开一个窗口,左下角也会显示。

 这里顺便提一下,微软一共发布了三款远程连接的插件:

  • Remote - Containers
  • Remote - SSH
  • Remote - WSL

名字上也很容易区分,就是支持连接容器,SSH主机,WSL子系统。

安装完成后VSCode会增加“远程资源管理器”

2)C/C++ (Microsoft):C语言开发必须安装

该插件对以下工具功能增强

  1. 跳转到定义;
  2. 代码自动补全;
  3. 查找代码引用;
  4. 列举 symbols;

3)CMake(twxs):在VSCode上支持CMake语法,打开/编写CMakeLists文件关键字提示

4)CMake Tools (Microsoft):CMake编译工具条

5)Python(Microsoft):在VSCode上支持Python语法及调试

6)Serial Monitor (Microsoft):串口收发插件,可在VSCode全流程搞定嵌入式开发、调试

这几个插件基本上都是Microsoft官方出的,质量有保障。其他插件可以根据个人开发习惯安装(我没安装其他的。。。装多了会导致VSCode每次打开加载时间过长),这几个插件基本可以满足日常C、Python开发需要。

VSCode插件默认的安装位置是C:\Users\用户名\.vscode\extensions,下载成功的插件都在该目录下。

3、SSH连接与配置

上一节讲到VSCode插件Remote-SSH可支持连接SSH主机,这样就可以通过安装在Windows下的VSCode,使用SSH连接至Linux主机,进行各种Linux命令操作。

VSCode安装完成后,需要进行以下配置:

1)Ubuntu下安装ssh-server及编译工具,输入命令:

sudo apt install -y net-tools openssh-server

2)获取Ubuntu的ip地址,输入命令:

ifconfig

记录下对应的IP地址

3)打开VSCode远程资源管理器,在“REMOTE”->“SSH”一栏中点击“+”

4)输入Ubuntu的IP,并按回车键进入下一步

5)选择c:\Users\用户名\.ssh\config作为ssh配置文件,

6)依次输入如下内容并保存:

Host:Ubuntu对应IP地址

HostName:可自定义为Host对应的名字,如Ubuntu-20.04

User:Ubuntu对应的用户登录名

7)连接远程主机

  • 选择远程主机类型

  • 输入远程主机登录密码,密码为Ubuntu对应登录用户的密码

按照以上流程即可登录Ubuntu主机了。

8)在终端中切换到对应的目录,并输入code .即可打开对应目录,在资源管理器中看到该目录结构。

4、SSH免密登录

依照步骤3完成SSH连接配置后,每次打开VSCode都要输入密码,是不是觉得有些麻烦。。。接下来我们配置SSH免密登录。

1)在Windows下打开PowerShell,并输入ssh-keygen -t rsa

按照提示,一路回车到结束。

在用户目录c:\Users\用户名\.ssh(.ssh为隐藏目录)下已经生成了ida_rsa.pub文件,将该文件复制至ubuntu下。

如何复制文件到Ubuntu下?

  1. 使用samba方式,可参考:ubuntu下samba 安装与配置_杭州_燕十三的博客-CSDN博客
  2. 使用共享文件夹方式,可参考:VMware下 Ubuntu16共享Windows10文件_杭州_燕十三的博客-CSDN博客

2)在Ubuntu命令行下也执行ssh-keygen -t rsa,流程同Windows。

3)在Ubuntu下执行

cat id_rsa.pub >> ~/.ssh/authorized_keys

再次打开VSCode远程资源管理器,点击对应的host,就不需要输入密码了。

5、Pico编译

参考前文“轻松玩转树莓派Pico之一、新手上路”,搭建Pico交叉编译环境,并在终端中输入:

mkdir build && cd build
cmake .. && make -j4

完成编译

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Rust WASM 与 JS 计算素数性能对比

前言 刚接触Rust wasm&#xff0c;请各看官高抬贵手。 简介 根据网上资料&#xff0c;使用 wasm-pack 搭配wasm-bindgen将Rust代码编译成 wasm。 搭好环境后&#xff0c;想对比一下rust-wasm与js的性能差距。 环境 OS: Deepin 20.7.1 apricotKernel: Linux 5.15.34CPU: Int…

LeetCode单周赛第320场 AcWing周赛第78场总结

1. LeetCode单周赛第320场 1.1 数组中不等三元组的数目 1.1.1 原题链接&#xff1a;力扣https://leetcode.cn/problems/number-of-unequal-triplets-in-array/ 1.1.2 解题思路&#xff1a; 暴力遍历咯。 1.1.3 代码&#xff1a; class Solution { public:int unequalTripl…

JAVA的学习心路历程之JDK基础入门(上)

任务需要&#xff0c;需要我学java调用linux下的动态库&#xff0c;于是搜寻java知识更新这篇。 从我上大学起我就听别人说JAVA&#xff0c;不不&#xff0c;应该是初中&#xff0c;那时候流行带键盘的智能手机&#xff0c;里面有好些个游戏都是JAVA写的&#xff0c;可见JAVA有…

【JavaWeb】HTML

HTML1 HTML概念1.1 超文本1.2 标记语言2 HTML的入门程序3 HTML语法规则4 使用idea创建StaticWeb工程5 HTML的各个标签的使用5.1标题标签5.2段落标签5.3换行标签5.4无序列表标签5.5超链接标签5.6图像标签5.7块标签6.使用表格标签展示数据6.1未合并单元格6.2合并单元格-合并列6.3…

套接字+网络套接字函数+客户端大小写程序

NAT映射 一般来说&#xff1a;源主机和目的主机都属于局域网&#xff0c;也就是ip地址可能相同 但是&#xff1a;路由器一般是公网ip,即整个网络环境可见 每一个路由器会维护一个NAT映射表 路由器的ip一般是固定的公网ip路由器与把与它相连的主机&#xff1a;私有ip端口号映射…

Java-多线程-ThreadPoolExecutor

前言 前面我们讲解线程的时候&#xff0c;讲到了使用Executors创建线程池&#xff0c;但是它里面所有方法可变的参数太少&#xff0c;不能很好的进行自定义设置&#xff0c;以及以后的扩展&#xff0c;更合理的使用cpu线程的操作&#xff0c;所以使用ThreadPoolExecutor创建线程…

SpringBoot集成webservice

前言 之前在工作中&#xff0c;有时候需要去对接第三方的医院&#xff0c;而很多医院的his系统用的都是老技术&#xff08;WebService&#xff09;。一直在对接webservice接口&#xff0c;却不知道webservice接口是怎么实现的&#xff0c;这一次&#xff0c;我们来一探究竟。 …

Android Compose Bloom 项目实战 (一) : 项目说明与配置

1. 项目介绍 Bloom是谷歌 AndroidDevChallenge (Android 开发挑战赛) 中的一期活动&#xff0c;目的是为了推广Compose&#xff0c;非常适合用来练手&#xff0c;通过这个项目&#xff0c;我们可以很好的入门Compose。本文介绍了如何从零开始&#xff0c;开发这个Compose项目。…

计算机系统结构期末复习

名词解释 程序访问局部性 时间局部性是指最近被访问过的数据很可能再次被访问 空间局部性是指最近被访问过的存储空间的附近空间可能会被访问 计算机体系结构 计算机体系结构是程序员所看到的计算机属性&#xff0c;即概念性结构与功能特性 窗口重叠技术 为了能更简单、更直接…

UE5笔记【五】操作细节——光源、光线参数配置、光照图修复

设置光线重载质量模式为预览&#xff1a;可以加快重构速度。 为了更快速高效的学习&#xff0c;直接查看别人已经建好的素材实例。 在EpicGames启动器中打开示例&#xff0c;找到这个照片级渲染。查看别人建好的效果图。 创建工程以UE5版本打开。进入查看。 观察Baked和碰撞测…

MySQL常用函数大全(面试篇)

本篇文章讲解是是MySQL的函数方法&#xff0c;涵盖所有的MySQL常见的方法。主要介绍了面试常问函数。 一、数字函数二、字符串函数三、日期函数四、MySQL高级函数 &#xff08;一&#xff09;数字函数 1、ABS(x) 返回x的绝对值 2、AVG(expression) 返回一个表达式的平均值&am…

Redis分布式锁

1. 什么是分布式锁 分布式锁指的是&#xff0c;所有服务中的所有线程都去获得同一把锁&#xff0c;但只有一个线程可以成功的获得锁&#xff0c;其他没有获得锁的线程必须全部等待&#xff0c;等到获得锁的线程释放掉锁之后获得了锁才能进行操作。 Redis官网中&#xff0c;set…

中加石墨再冲刺港交所上市:2022年初至今收入为零,陈东尧为CEO

11月18日&#xff0c;中加石墨控股股份有限公司&#xff08;下称“中加石墨”&#xff09;在港交所递交招股书&#xff0c;准备在港交所主板&#xff0c;宏信为独家保荐人。据贝多财经了解&#xff0c;这是中加石墨第二次递表&#xff0c;此前曾于2022年2月28日递交上市申请材料…

通过inode结构体取到次设备号,实现LED灯的亮灭

对Linux来说&#xff0c;设备驱动也是文件。驱动控制硬件的过程&#xff0c;实际上是对驱动文件的读写操作。 对内核来说&#xff0c;如何获取唯一的文件标识呢&#xff1f;当然是通过file结构体中的&#xff0c;inode结构体识别应用层打开的到底是哪一个设备文件。 实验操作及…

数据结构题目收录(二十)

1、含有n个非叶结点的m阶B树中至少包含&#xff08;&#xff09;个关键字。 A&#xff1a;n(m1)B&#xff1a;nC&#xff1a;n(┌\ulcorner┌m/2┐\urcorner┐-1)D&#xff1a;(n-1)(┌\ulcorner┌m/2┐\urcorner┐-1)1 解析 除根结点外&#xff0c;m阶B树中的每个非叶结点至…

mongodump工具安装及使用详解

MongoDB导入导出和备份的命令工具从4.4版本开始不再自动跟随数据库一起安装&#xff0c;而是需要自己手动安装。 官方网站下载链接&#xff1a;Download MongoDB Command Line Database Tools | MongoDB 将下载的压缩包通过工具上传到服务器或者虚拟机中某个路径下并解压&…

ZYNQ图像处理项目——线性神经网络识别mnist

一、线性神经网络识别mnist 线性神经网络其实也可以叫做线性分类器&#xff0c;其实就是没有激活函数的神经网络来对目标进行识别&#xff0c;像支持向量机、多元回归等都是线性的。这边我采用了线性神经网络来识别mnist数字。 我这边是看了一本讲神经网络的书籍&#xff0c;然…

分析高数值孔径物镜的聚焦特性

摘要 高数值孔径的物镜广泛用于光刻、显微等方面。 因此&#xff0c;在仿真聚焦时考虑光的矢量性质是至关重要的。VirtualLab可以支持此类透镜的光线和场追迹分析。通过场追迹分析&#xff0c;可以清楚地显示出由于矢量效应引起的非对称焦点。相机探测器和电磁场探测器可以方便…

【MySQL】Spring Boot项目基于Sharding-JDBC和MySQL主从复制实现读写分离(8千字详细教程)

目录前言一、 介绍二、 主从复制1. 原理2. 克隆从机3. 克隆从机大坑4. 远程登陆5. 主机配置6. 从机配置7. 主机&#xff1a;建立账户并授权8. 从机&#xff1a;配置需要复制的主机9. 测试10. 停止主从同步三、 读写分离1. Sharding-JDBC介绍2. 一主一从3. 一主一从读写分离3.1 …

安服-windowslinux日志分析

目录 windows日志分析 windows事件日志 日志分析工具 Linux日志分析 windows日志分析 windows事件日志 日志分析工具 Linux日志分析 rsyrslog.conf中记录了&#xff0c;这些日志文件存储的位置以及存储的内容是关于什么的日志 其中lastlog比较重要&#xff0c;记录了用户登录…