[Linux]从零开始的STM32MP157交叉编译环境配置

一、前言

        最近该忙的事情也是都忙完了,也是可以开始好好的学习一下Linux了。之前九月份的时候就想入手一块Linux的开发板用来学习Linux底层开发。之前在NXP和STM32MP系列之间犹豫,思来想去还是入手了一块STM32MP157。当然不是单纯因为MP157的性能在NXP之上,之前也发现了NXP的开发寄存器的例程都太偏向底层了,于我而言就有些多余了,毕竟这些底层的逻辑在学习STM32时就已经编写过了。另一方面STM32MP157说明白点也是一块STM32,听到STM32总会有一种亲切感。考虑到资料的完善程度,和学习难度,所以选择了正点原子的板子。后面的讲解也都会使用正点原子的STM32MP157来进行。那么本次教程,就来教大家如何配置STM32MP157的交叉编译环境吧!

二、谁适合本次教程

        本次教程并不是面向纯小白的,如果你之前并没有MCU的开发基础,甚至连STM32都没接触过,那我并不推荐你来学习本次教程。如果你之前学习过一段时间的STM32或者类似的MCU,理解ARM架构的芯片的开发流程并且了解基本的通信协议使用过一些模块,在此基础上想要学习Linux的开发,那么本次教程是适合你的。我会对我的操作进行相对详细的解释,对可能遇到问题的地方进行详细的说明。如果你准备好了,就让我们开始吧!

三、资料的准备

        因为本次教程都是基于正点原子的STM32MP157开发板进行的,建议观看本次教程的小伙伴使用和我一样的开发板这样以确保环境和资料的统一。这里我们可以去正点原子的资料下载站下载这块开发板相关的资料。我们可以直接在浏览器中搜索“正点原子资料下载”,这里搜索到的第一个就是正点原子的资料下载站了:

如果大家没有搜索到,可以直接点击下方的链接前往:

正点原子资料站:正点原子资料下载中心 — 正点原子资料下载中心 1.0.0 文档

进入以后,我们就能看到正点原子所有开发板的资料了:

这里我们选择“正点原子Linux开发板”:

这里我们可以看到许多STM32MP157的开发板,这里大家根据自己的情况进行下载,我这里购买的开发板为“STM32MP157开发板”,所以我就下载这块开发板的资料:

选择对应的开发板以后点击进入,这里我们只需要下载A盘的资料即可:

正点原子的资料下载解压后就能得到如下文件夹:

在后面的教程中,我们会经常使用到这个文件夹。

至此,我们正点原子的官方资料就已经准备完成了。

这里针对本次新建环境,我也准备了一份资料,这些资料有一部分是我自己的,有一部分是正点原子的。当然,我提供资料中的大部分内容正点原子的资料中都有。只是针对本次新建环境我特意整理了一下,以防大家翻找资料过于麻烦。当然,在后面的教程中我所使用到的文件位置,不管这个文件在正点原子的官方资料中或者是我准备的资料中,我都会进行详细介绍。

资料下载:https://pan.baidu.com/s/19xST-gKwZ5PkacJv40tDHA?pwd=clxm 提取码: clxm

当你准备好以上以后,就让我们开始吧!另外,多啰嗦几句,因为是开发Linux,所以我们大部分时候都需要在Linux中进行交叉编译。难免会遇到一些比较反常或者是我在文章中并没有提到的问题。这里希望大家能够积极的面对问题并且自行进行搜索和解决问题!

四、在开始之前

        在教程开始之前,我们要先和大家统一一下教程文档,我们的教程也和文档完全同步,教程中,我会说到文档中的一些可能出错的地方。这里我们使用的文档是正点原子的“【正点原子】STM32MP1嵌入式Linux驱动开发指南V2.1.pdf”,它被放在了正点原子资料目录下的“09、文档教程(非常重要)”文件夹下:

如果这里你使用的是我给的资料那么这个文档就被放在了我给的资料目录下的“文档教程”文件夹下:

五、VMware的安装以及Ubuntu的部署

        这里先解释一下为什么我们要使用VMware和Ubuntu,相信之前使用过VMware的小伙伴应该都知道这是一款非常强大的虚拟机工具,VMware能够让我们在原本的windows系统的基础上再运行一个系统。之前也提到了,我们学习Linux就需要在Linux中进行交叉编译。所以我们需要使用VMware来安装Linux的虚拟机。这里我们选择的Linux发行版是Ubuntu,因为Ubuntu友好的图形化界面和优秀的社区支持深受Linux开发者的喜爱,最主要的是,在正点原子官方教程中也是使用了Ubuntu来进行交叉编译。当然,如果你认为你对Linux足够的了解也可以使用和我不一样的环境,如果你是小白的话,建议所有操作都和我一样,因为可能会遇到你无法解决的问题。

在之前我写过一篇很详细的VMware的安装教程,并且当时也教了如何在虚拟机中安装Ubuntu。如果你对VMware还不够了解建议先看下面的VMware安装教程:

VMware及Ubuntu的安装:

[Linux]如何在虚拟机安装Ubuntu?(小白向)_虚拟机 ubuntu-CSDN博客

这里还是请跟着上面的教程至少把VMware安装好。因为我已经安装过了,这里就不进行VMware的安装展示了,下面我们主要展示如何创建Ubuntu的虚拟机。这里我们使用到的Ubuntu的版本为18.04,这里强烈建议大家使用和我一样的版本。Linux的环境中依赖关系复杂,尽管两个Linux版本就隔了一年但是其中的某些包都可能不一样从而导致配置出来的环境不一样。

这里Ubuntu我们使用的是18.04版本,如果你是小白请务必将Ubuntu的版本和我统一。下面我就来带大家找一下Ubuntu18版本的镜像位置。如果你下载的是正点原子的资料,那么镜像被放在资料文件夹下的“03、软件”文件夹下:

如果你使用的是我给的资料,那么这个镜像被放在了资料文件夹下的“系统镜像”文件夹下:

知道了镜像的位置以后,我们就可以开始创建虚拟机了,首先启动VMware,选择新建虚拟机:

这里我们选择自定义,随后选择下一步:

这里继续选择下一步:

下面选择“稍后安装操作系统”,然后点击“下一步”:

这里我们选择“Linux”版本选择“Ubuntu 64位”,随后点击“下一步”:

下面会让大家设置虚拟机的名字和存放的位置,这里建议大家单独新建一个文件夹来存放虚拟机,并且给虚拟机修改一个清晰的名字来表示这个虚拟机用途,设置好以上以后我们点击“下一步”:

这里的处理器数量大家自行根据自己的情况进行选择,不一定要和我一样,如果不会选择的话,可以先看前面的“VMware中安装Ubuntu的教程”。分配好处理器数量以后,点击“下一步”:

这里的内存大家根据自己的情况进行选择即可,这里我选择8个G,这里内存不建议低于两个G,低于两个G可能会引起虚拟机的卡顿,选择好以后,点击“下一步”即可:

这里的网络我们随意选择即可,后面我们会专门进行修改:

这里的IO控制器类型,我们选择它推荐的就好,选择好以后,我们点击“下一步”即可:

这里选择磁盘类型我们同样选择它推荐的,选择好以后,我们点击“下一步”:

下面选择磁盘部分,我们选择“创建新的虚拟磁盘”,随后点击“下一步”:

这里虚拟磁盘最大建议大家设置为100GB以上,因为后面可能涉及到编译操作系统可能需要比较大的磁盘空间,并且我们还需要将“虚拟磁盘存储为单个文件”,设置好以上以后,我们点击“下一步”:

下面要我们选择虚拟磁盘的路径,这里路径我们可以选择到和虚拟机同一个文件夹即可:

设置好以上以后,我们点击“完成”:

这样我们的虚拟机就已经创建好了:

下面我们需要对虚拟机进行一些简单的配置,我们首先点击“编辑虚拟机设置”:

首先我们选择“CD/DVD”选项:

随后选择“使用ISO映像文件”,这里我们点击“浏览”将一开始提到的Ubuntu18的镜像选择进来,之前已经为大家介绍过镜像存放的位置了,这里就不多说了:

随后我们再点击“网络适配器”:

这里我们选择“自定义”并且选择“VMnet0”,这里为什么要选择“VMnet0”后面会解释:

选择好以上以后,我们点击“确定”:

这样,我们虚拟机部分就已经配置完成了,下面我们来配置一下虚拟机网络,为了保证我们的虚拟机有网络并且和主机处于同一网段下,所以我们需要单独对虚拟机的网络进行配置。

这里我们点击编辑,再选择“虚拟网络编辑器”:

随后点击“更改设置”:

这里我们要配置“VMnet0”网卡,没错,正是我们一开始选择的网卡,我们要将这张网卡配置为“桥接模式”并且桥接到计算机的上网网卡上,这样,虚拟机会通过计算机的网卡向上层路由申请一个IP地址,这个IP地址和我们计算机处于同一个网段中。这样,我们的虚拟机可以访问网络,并且虚拟机也可以被我们的计算机访问到,再配置好以上以后,我们直接点击确定即可:

在配置完以上以后,我们就可以启动虚拟机了,我们直接点击“开启此虚拟机”:

虚拟机启动以后就来到了系统安装引导界面,我们将在这里完成Ubuntu系统的安装:

我们在左边的侧边栏中往下滑选择“中文”,随后我们点击“安装Ubuntu”:

这里的键盘布局不用修改,直接点击“继续”即可:

下面我们选择“正常安装”,并且勾选“安装Ubuntu时下载更新”,这样安装的时间可能比较长,但是Ubuntu中的包都会被更新到一个比较新的版本,在选择好以后,我们同样直接点击“继续”:

这里我们选择“清除整个磁盘并安装Ubuntu”,随后点击“现在安装”:

这里弹出的窗口我们点击“继续”即可:

这里需要我们选择时区,我们选择上海时区,直接点击“继续”:

下面需要大家输入用户名和计算机名以及用户名对应的密码,大家根据自己的情况输入即可,不一定要和我一样,输入完成以后,我们点击“继续”:

随后Ubuntu就进入了安装阶段,这里安装的时间可能比较长,我们耐心等待即可:

如果在此过程中因为网络问题安装失败了可以选择重新进行前面的步骤,并且不勾选“安装Ubuntu时下载更新”。

在Ubuntu安装完成以后,需要我们重启,我们点击“现在重启”即可:

不出意外的话,你在重启时,会卡在这样一条提示里:

这里我们只需要右键虚拟机然后在虚拟机的设置界面中,将"CD/DVD"下的“启动时连接”的勾去掉:

为了使我们虚拟机显示正常一点,这里我们再来设置一下显示,我们点击“显示器”,然后将“拉伸模式”打上勾,并且选择“保持纵横比拉伸”:

完成以上步骤以后,我们重启一下虚拟机。

这样就可以正常进入我们虚拟机了:

可以看到现在虚拟机的分辨率非常奇怪,我们可以点击虚拟机如图所示的设置按钮来对虚拟机进行设置:

随后我们点击虚拟机设置中的“设备”选项:

这里就已经可以设置虚拟机的分辨率了,我们将其设置为一个大一点的分辨率:

设置完成以后,我们可以将窗口缩小然后点击右边的“应用”:

这里大家根据自己的使用习惯,可以反复调试,将虚拟机的分辨率调整到一个让自己比较舒服的大小:

至此,我们VMware和Ubuntu就都已经安装完成了。

六、Ubuntu中的基础配置

        当我们已经完成Ubuntu的安装以后,我们需要对Ubuntu进行一些基础的配置,比如一些文件传输服务和一些远程服务,让我们的Ubuntu使用起来更方便。下面我们介绍“VMware tools”,“FTP”,“SSH”等服务的作用以及如何安装。

1.SSH服务的安装

        这里我们要让主机使用命令行来访问Ubuntu虚拟机,就必须安装SSH服务。我们在Ubuntu的终端中输入下面的命令来更新源,这可以使我们安装的包是一个比较新的版本:

sudo apt update

随后我们使用下面的命令来安装SSH服务,出现选项的话,直接选择y即可:

sudo apt install openssh-server

在安装以后我们可以使用下面的命令来查看SSH服务是否已经运行,可以看到,我这里的SSH是正常运行了的:

sudo systemctl status sshd

我们再使用下面的命令来安装一个网络工具,这个网络工具可以让我们直接查看到虚拟机的IP地址:

sudo apt install net-tools

在这个网络工具安装好以后我们使用下面的命令来查看我们的网络情况:

ifconfig

这里可以看到我们虚拟机的IP地址为“192.168.18.121”,我们可以在计算机的终端中输入下面的命令来查看计算机的IP地址,从而来判断计算机和虚拟机是否处于同一个网段中:

ipconfig

这里看到我的计算机的网络IP地址为“192.168.18.185”这里计算机和虚拟机是处于同一个网段中,我们只需要直接使用SSH工具远程虚拟机即可。大家可以使用自己习惯的远程工具,我这里就使用windows自带的powershell来进行远程,远程命令格式如下:

ssh 用户名@服务器地址

可以看到,这里我已经通过IP地址远程到了我的虚拟机,说明SSH安装没有问题:

这样,我们的SSH服务就已经安装完成了。

2.VMware tools的安装

        在我们实际操作虚拟机时,可能会涉及到我们的计算机向虚拟机中复制文件或者复制文字的情况。如果不安装VMware tools的话,复制操作是无法完成的。这里的VMware tools的安装有两种方法。这两种方法我都会介绍,这里建议大家在第一次安装时,都使用第一个方法,如果第一个方法失败了再使用第二个方法。现在就让我们开始吧。

我们直接右键虚拟机然后点击“安装VMware tools”:

在安装完成以后,我们的桌面上就会出现一个VMware tools的光盘图标:

我们点击进入以后就能看到这些文件了:

这里我们将这个光盘映像中后缀为“tar.gz”的文件复制出来,这里我们可以直接复制到桌面上,因为这是是一个压缩文件,我们首先需要解压,这里可以直接右键然后选择“提取到此处”:

提取出来以后,我们就得到了以下文件夹:

打开解压得到的文件以后,我们可以看到里面还有一层文件夹,我们继续打开即可:

最后,我们就能看到以下这些文件了,我们这里只需要注意后缀为.pl的文件:

我们直接在这个文件夹中右键打开终端,注意,一定是在这个文件夹中右键:

终端打开以后,我们在终端中输入下面的命令就可以开始安装VMware tools了,这里一定要反复检查自己所在的路径是否正确,如果不正确命令是会报错的:

sudo ./vmware-install.pl

这里命令的含义是,使用管理员身份去运行当前目录下的“vmware-install.pl”文件。这里的“./”表示当前目录下。

命令输入以后,会有一堆的输出并且给出了选项:

这里我们直接输入“yes”回车即可:

在安装中,可能会让我们选择路径之类的,我们直接选择回车即可,即使用它的默认路径:

在VMware tools的后续安装中,只要出现让我们选择yes或者no时,我们都输入yes。当让我们选择路径时,我们都直接回车。这样一路下来,出现下面这样的提示就表示已经安装成功了:

随后,我们再次重启虚拟机。这样一来,我们的VMware tools就已经安装完成了。如果你在windows中复制了文件,在Ubuntu中仍然不能粘贴,那么你可能就需要第二种方法了。第二种方法涉及到大量的命令复制和粘贴,所以这里建议大家使用SSH远程Ubuntu。

我们先使用下面的命令卸载“VMware tools”:

sudo apt-get autoremove open-vm-tools

如果你像我一样,卸载时这里提示软件包没有安装也是正常的:

然后我们使用下面的命令来安装VMware tools:

sudo apt-get install open-vm-tools-desktop

如果在安装时出现了选项,我们一路输入Y即可:

这里问我们要不要替换文件,我们继续输入Y:

这里一路Y下去直到安装结束。

这里安装完成以后,我们同样的重启虚拟机。

完成以后,我们就可以直接拖拽或者是直接复制粘贴文件了,不管是windows到ubuntu中,还是ubuntu到windows中复制粘贴都是自由的。剪切板是共享的:

至此,我们的VMware tools就已经安装完成了。

3.FTP的安装

        这里我们已经安装了VMware tools,实现了windows中和Ubuntu中文件的互传,下面我们介绍另外一种文件传输协议——FTP。大家可能会有疑问,为什么我们的VMware tools已经可以实现文件的传输了,为什么我们还需要另一种文件传输协议呢?其实VMware tools是比较局限的,它只适用于我们将Linux安装在虚拟机中时的文件互传。如果我们的Linux机器在别的地方,我们是不能实现文件的互传的。在实际工作时,编译操作系统时需要花费大量的计算机性能,如果使用自己的计算机的话可能会编译十几个小时都编译不完。所以,一般的,公司都会准备一台性能非常高的编译服务器用来专门编译系统。这时,我们就需要将文件上传到公司的系统编译服务器上来进行操作,这时我们不可能使用VMware tools了,这就需要FTP文件传输协议。下面,我们就来安装一下FTP服务吧!

在Linux端,我们可以在终端中输入下面的命令来安装FTP服务:

sudo apt-get install vsftpd

在安装好以后,我们还需要修改一下相关的配置文件。正点原子这里使用的是vi来修改文件,vi太不方便了。这里我们使用nano来修改配置文件,这里大家可以使用下面的命令来安装nano:

sudo apt install nano

大部分情况下,在Ubuntu18.04中nano都是被安装好的。

我们这里使用下面的命令来修改配置文件,因为这里是修改etc下的文件了所以一定要加上sudo:

sudo nano /etc/vsftpd.conf

打开配置文件以后,就能看到以下界面了:

这里我们要保证配置文件的如下两行没有被注释并且都为yes,在这个配置文件中#即为注释行。如果看到这两行前面有#请删掉:

local_enable=YES
write_enable=YES

这里就是修改好的样子:

这里我们按下“Curl+X”选择离开,这里输入Y并且回车就可以保存并退出了:

如果不确定修改好没有可以再次打开看看。这样我们Linux一侧就配置好了。

这样我们可以在windows的powershell中使用下面的命令进行远程文件了。这里命令格式如下:

ftp 用户名@服务器地址

可以看到我们这里已经远程到了:

像这样,我们已经可以使用命令行对Ubuntu进行文件传输了。

当然,大家可能已经发现了,这样文件传输的话,太不方便了,首先就要求我们对命令熟悉,其次我们还需要知道我们要传输的文件的位置,最后就是没有图形化,不够直观。有办法可以解决码?当然有,我们下面就为大家推荐一个图形化的FTP工具,它就是——filezilla。话不多说,现在就来为大家找以下filezilla的安装包在资料中的位置,如果你下载了正点原子的资料那么filezilla被放在了正点原子资料文件夹下的“03、软件”文件夹下:

大家当然可以直接使用这里的安装包行安装。在我提供的资料中,它被放在了“工具软件”文件夹下:

我这里放的是一个不用安装的绿色版,解压以后,我们直接点击“filezilla.exe”即可运行:

当然,因为filezilla是一款开源软件,并且在不断更新,如果你想下载最新版,可以直接在浏览器中搜索“filezilla”,这里要往下滑一点才能找到官网:

这里大家也可以点击我放的链接前往:

filezilla官网:FileZilla中文网 - 免费开源的FTP解决方案

进入以后,就能看到如下界面了,大家可以根据自己的喜好选择不同的版本进行下载:

总之,不管用什么办法,这里需要大家将filezilla安装好。

随后我们来演示以下如何使用filezilla进行文件传输,我们首先启动filezilla,启动以后就能看到以下界面了:

界面的左侧会显示我们windows中的文件,在右侧会显示Linux一侧的文件,因为还没有进行FTP远程所以还没有文件。我们直接点击左上角的文件,然后点击“站点管理器”:

下面我们直接点击“新站点”表示我们要新建一个站点:

这里的协议我们选择“SFTP-SSH”:

这里的主机我们写虚拟机的IP地址即可,端口空着不填,下方的用户名和密码我们直接填登录Ubuntu的用户和密码:

配置好以上以后,我们点击“字符集”,这里我们要选择“强制UTF-8”这是为了防止我们在文件远程时乱码:

配置好以上以后,我们点击“连接”即可:

下面我们在弹出的窗口中点击“确定”:

此时,我们就能看到Ubuntu一侧的文件了:

我们可以将文件直接拖到Ubuntu中:

至此,我们的FTP服务就已经安装完成了。

现在我们Ubuntu中的所有基础配置都已经完成了。

七、GCC交叉编译器的安装

        还记得我们的芯片是什么型号的吗?是STM32MP157对吧。大家了解过这块芯片内部的硬件吗?是的,里面两个Cortex-A的内核,和一个Cortex-M4内核,这些内核都是基于ARM的,使用的是ARM指令集。而我们的计算机,就目前大多数计算机而言,都是X86架构的,X86架构的计算机编译出来的文件是一个X86的可执行文件,这些文件能够运行在X86架构的计算机上,因为它们都使用了X86指令集。但是一开始也说了,我们的芯片STM32MP157使用的是ARM指令集,那我们怎样才能将X86编译的基于X86指令集的可执行文件运行到ARM指令集的芯片上呢?显然这时不可能的。这个时候我们就需要使用到交叉编译器,交叉编译的交叉就指的是架构交叉。我们能够使用交叉编译器在X86架构的设备上编译出ARM设备能够运行的可执行文件。现在就让我们一起来安装交叉编译器吧!

同样的说下交叉编译器在资料中被放在了什么地方。如果你使用的是正点原子的资料,那么交叉编译器被放在了正点原子资料文件夹下的“05、开发工具\01、交叉编译器”文件夹下:

这里的带SDK字样的编译器是ST推出的交叉编译工具,这里我们先不使用,这里我们使用ARM推出的交叉编译器。这个交叉编译工具在ARM的官方也可以下载到,但是不推荐大家自己下载,因为可能会出现一些奇怪的问题。

如果你下载了我给的资料,这个交叉编译工具被放在了“编译工具”文件夹下:

这里了解了交叉编译器的位置,我们需要使用FTP将其传输到Ubuntu中,这里我在用户目录下创建了一个linux文件夹并且在这个文件夹下又创建了一个tool文件夹,用于存放相关工具:

这里我将交叉编译工具通过FTP传输到tool文件夹中:

这里我们可以切换到tool目录去查看一下文件:

我们这里需要创建一个文件夹用于存放交叉编译器,这里使用下面的命令:

sudo mkdir /usr/local/arm

随后,我们使用下面的命令将交叉编译器复制到刚才创建的文件夹中,这里需要注意的是,我们需要在交叉编译器所在的目录执行这段命令:

sudo cp gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz /usr/local/arm/ -f

随后去到交叉编译器被复制到的目录,使用下面的命令:

cd /usr/local/arm

接着,我们可以下面的命令来解压交叉编译工具:

sudo tar -vxf gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf.tar.xz

解压以后,我们就得到了以下文件夹:

我们交叉编译个可执行文件就放在了这个文件夹下的bin文件夹中:

这里有非常多的工具,这里就不一一介绍了。因为交叉编译的工具都被放在了这里所以我们要将这个文件夹添加到环境变量,这样不管我们在哪个路径都可以使用这些交叉编译器,我们使用下面的命令打开环境变量配置文件:

sudo nano /etc/profile

我们将下方一行添加到配置文件中,如图:

export PATH=$PATH:/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin

这样,我们相关的路径就被添加到环境变量中了。

在使用交叉编译之前,我们还需要安装一些相关的库,这里直接使用下面的命令:

sudo apt-get install lsb-core lib32stdc++6

相关库安装完成以后,我们需要重启一下Ubuntu,这里的重启是必要的。

我们可以在终端中输入下面的命令来查看交叉编译器是否安装成功。如果提示命令找不到,可能是因为环境变量添加不正确,请重新检查环境变量。如果你看到以下的输出,说明交叉编译器已经安装成功了:

我们可以创建一个.c的文件来测试一下我们的交叉编译器。这里我直接创建一个名为main.c的文件,并且写入如下代码:

我们使用下面的命令来编译这个.c的文件

arm-none-linux-gnueabihf-gcc -o main main.c

这里的arm-none-linux-gnueabihf-gcc表示我们的交叉编译器。

这里的-o main表示生成的可执行文件为“mian”,这里的“main,c”是我们输入的源文件。

编译过后,我们就能看到,我们当前目录多了一个名为main的可执行文件:

这个可执行文件在这台计算机肯定是无法运行的,因为它是被交叉编译器编译成的ARM架构的可执行文件:

我们可以用下面的命令来检查一下这个二进制文件的架构:

file main

我们可以看到这个文件确实已经被编译为了ARM架构。

至此我们GCC的交叉编译环境就已经配置完成了。

八、vscode的安装

        如果只是搭建好编译环境的话,像上面那样就已经可以了。我们可以编写相关的c文件并且编译,但是不知道大家有没有发现一个问题。是的,就是这样开发超级不方便如果文件多起来的话,我们阅读我们的工程文件就会变得非常麻烦。下面我们就来安装一款非常易用得代码编辑器——vscode。

按照惯例,还是带大家去找一下安装包的位置。如果你使用的是正点原子的资料,那么vscode的安装包被放在了正点原子资料包下的“03、软件\Visual Studio Code”文件夹下:

这里后缀为exe的肯定是给windows用的,这里windows的安装教程就不多说了,因为确实比较简单。后面后缀为deb的文件就是给Ubuntu使用的了。我们可以看到这里vscode的版本为1.50.1,是一个比较旧的版本。

在我给的资料中,vscode的安装包被放在了资料文件夹下的“工具软件”文件夹下,这里可以看到同样是一个deb的文件但是版本是比较新的1.85.2:

当然,大家也可以从浏览器中下载vscode的安装包,但是请注意vscode官网的这条提示:

看不懂没关系,我们来翻译一下:

是的这里大致就是在说,在vscode1.85以上的版本只支持Ubuntu20.04了。所以我们是Ubuntu18.04只能使用vscode1.85以下的版本。如果在这里使用较高的版本话,经过测试,一定会出现依赖问题。

下面,我们同样是使用FTP服务将vscode的安装包上传到Ubuntu中:

这里我们同样切换到vscode所在的目录,然后使用下面的命令来安装vscode:

sudo dpkg -i ./code_1.85.2-1705561292_amd64.deb

如果这里没有提示缺失库之类的,安装就算是完成了:

我们可以在Ubuntu的软件列表中找到vscode:

这样我们vscode就算是安装完成了。

下面为了让我们的vscode更易用,让代码阅读更为方便,我们需要为vscode安装插件。我们首先启动vscode:

随后点击vscode的插件商店:

这里我们需要搜索并安装如下插件,这里的插件大家直接复制到搜索框搜索然后点击“install”即可:

1)、C/C++,这个肯定是必须的。
2)、C/C++ Snippets,即 C/C++重用代码块。
3)、C/C++ Advanced Lint,即 C/C++静态检测 。
4)、Code Runner,即代码运行。
5)、Include AutoComplete,即自动头文件包含。
6)、Rainbow Brackets,彩虹花括号,有助于阅读代码。
7)、One Dark Pro,VSCode 的主题。
8)、GBKtoUTF8,将 GBK 转换为 UTF8。
9)、ARM,即支持 ARM 汇编语法高亮显示。
10)、Chinese(Simplified),即中文环境。
11)、vscode-icons,VSCode 图标插件,主要是资源管理器下各个文件夹的图标。
12)、compareit,比较插件,可以用于比较两个文件的差异。
13)、DeviceTree,设备树语法插件。
14)、TabNine,一款 AI 自动补全插件,强烈推荐,谁用谁知道!
安装完成以后重新打开 VSCode,如果要查看已经安装好的插件

当我们安装好上面的插件以后,需要重启vscode。

至此,我们vscode的安装与配置就已经完成了。

九、结语

        总算是结束了,本次教程可以说是非常长了。如果大家在操作的过程中遇到了问题,可以在评论区或者私信中联系我。最后,感谢大家的观看!

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

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

相关文章

小程序如何引入腾讯位置服务

小程序如何引入腾讯位置服务 1.添加服务 登录 微信公众平台 注意:小程序要企业版的 第三方服务 -> 服务 -> 开发者资源 -> 开通腾讯位置服务 在设置 -> 第三方设置 中可以看到开通的服务,如果没有就在插件管理中添加插件 2.腾讯位置服务…

添加计算机到AD域中

添加计算机到AD域中 一、确定计算机的DNS指向域中的DNS二、打开系统设置三、加域成功后 一、确定计算机的DNS指向域中的DNS 二、打开系统设置 输入域管理员的账密 三、加域成功后 这里有显示,就成功了。

从epoll事件的视角探讨TCP:三次握手、四次挥手、应用层与传输层之间的联系

目录 一、应用层与TCP之间的联系 二、 当通信双方中的一方如客户端主动断开连接时,仅是在客户端的视角下连接已经断开,在服务端的眼中,连接依然存在,为什么?——触发EPOLLRDHUP事件:对端关闭连接或停止写…

使用RSyslog将Nginx Access Log写入Kafka

个人博客地址:使用RSyslog将Nginx Access Log写入Kafka | 一张假钞的真实世界 环境说明 CentOS Linux release 7.3.1611kafka_2.12-0.10.2.2nginx/1.12.2rsyslog-8.24.0-34.el7.x86_64.rpm 创建测试Topic $ ./kafka-topics.sh --zookeeper 192.168.72.25:2181/k…

使用 Docker 部署 Java 项目(通俗易懂)

目录 1、下载与配置 Docker 1.1 docker下载(这里使用的是Ubuntu,Centos命令可能有不同) 1.2 配置 Docker 代理对象 2、打包当前 Java 项目 3、进行编写 DockerFile,并将对应文件传输到 Linux 中 3.1 编写 dockerfile 文件 …

《研发管理 APQP 软件系统》——汽车电子行业的应用收益分析

全星研发管理 APQP 软件系统在汽车电子行业的应用收益分析 在汽车电子行业,技术革新迅猛,市场竞争激烈。《全星研发管理 APQP 软件系统》的应用,为企业带来了革命性的变化,诸多收益使其成为行业发展的关键驱动力。 《全星研发管理…

22、PyTorch nn.Conv2d卷积网络使用教程

文章目录 1. 卷积2. python 代码3. notes 1. 卷积 输入A张量为: A [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ] \begin{equation} A\begin{bmatrix} 0&1&2&3\\\\ 4&5&6&7\\\\ 8&9&10&11\\\\ 12&13&14&15 \end{b…

ASP.NET Core - 依赖注入(四)

ASP.NET Core - 依赖注入(四) 4. ASP.NET Core默认服务5. 依赖注入配置变形 4. ASP.NET Core默认服务 之前讲了中间件,实际上一个中间件要正常进行工作,通常需要许多的服务配合进行,而中间件中的服务自然也是通过 Ioc…

UE5游戏性能优化指南

解除帧率限制 启动游戏 按 “~” 键 输入 t.MaxFPS 200 可以解除默认帧率限制达到更高的帧率 UE游戏性能和场景优化思路: 1. 可以把可延展性调低,帧率会大幅提高,但画质会大幅降低 2.调整固定灯光,静态光源&#xff…

深度学习中的卷积和反卷积(四)——卷积和反卷积的梯度

本系列已完结,全部文章地址为: 深度学习中的卷积和反卷积(一)——卷积的介绍 深度学习中的卷积和反卷积(二)——反卷积的介绍 深度学习中的卷积和反卷积(三)——卷积和反卷积的计算 …

【C语言】线程

目录 1. 什么是线程 1.1概念 1.2 进程和线程的区别 1.3 线程资源 2. 函数接口 2.1创建线程: pthread_create 2.2 退出线程: pthread_exit 2.3 回收线程资源 练习 1. 什么是线程 1.1概念 线程是一个轻量级的进程,为了提高系统的性能引入线程。 在同一个进…

【C语言】字符串函数详解

文章目录 Ⅰ. strcpy -- 字符串拷贝1、函数介绍2、模拟实现 Ⅱ. strcat -- 字符串追加1、函数介绍2、模拟实现 Ⅲ. strcmp -- 字符串比较1、函数介绍2、模拟实现 Ⅳ. strncpy、strncat、strncmp -- 可限制操作长度Ⅴ. strlen -- 求字符串长度1、函数介绍2、模拟实现&#xff08…

Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)

本文介绍在Windows电脑中,下载、部署NVM(node.js version management)环境,并基于其安装不同版本的Node.js的方法。 在之前的文章Windows系统下载、部署Node.js与npm环境的方法(https://blog.csdn.net/zhebushibiaoshi…

centos 8 中安装Docker

注:本次样式安装使用的是centos8 操作系统。 1、镜像下载 具体的镜像下载地址各位可以去官网下载,选择适合你们的下载即可! 1、CentOS官方下载地址:https://vault.centos.org/ 2、阿里云开源镜像站下载:centos安装包…

STM32-笔记40-BKP(备份寄存器)

一、什么是BKP(备份寄存器)? 备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或…

vue-cli项目配置使用unocss

在了解使用了Unocss后&#xff0c;就完全被它迷住了。接手过的所有项目都配置使用了它&#xff0c;包括一些旧项目&#xff0c;也跟同事分享了使用Unocss的便捷性。 这里分享一下旧项目如何配置和使用Unocss的&#xff0c;项目是vue2vue-cli构建的&#xff0c;node<20平常开…

新增文章分类功能

总说 过程参考黑马程序员SpringBoot3Vue3全套视频教程&#xff0c;springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili 目录 总说 一、功能实现 1.1 Controller层 1.2 Service层 1.3 Impl层 1.4 Mapper层 1.5 测试接口 二、优化 2.1 2.2 一、…

知识图谱常见的主流图数据库

在知识图谱中&#xff0c;主流使用的图数据库包括以下几种&#xff1a; Neo4j&#xff1a;这是目前全球部署最广泛的图数据库之一&#xff0c;具有强大的查询性能和灵活的数据模型&#xff0c;适用于复杂关系数据的存储和查询。 JanusGraph&#xff1a;JanusGraph是一个开源的…

JavaSE学习心得(多线程与网络编程篇)

多线程-网络编程 前言 多线程&JUC 多线程三种实现方式 第一种实现方式 第二种实现方式 第三种实现方式 常见成员方法 买票引发的安全问题 同步代码块 同步方法 Lock锁 生产者和消费者 常见方法 等待唤醒机制 练习 抢红包 抽奖 多线程统计并求最…

Pytorch基础教程:从零实现手写数字分类

文章目录 1.Pytorch简介2.理解tensor2.1 一维矩阵2.2 二维矩阵2.3 三维矩阵 3.创建tensor3.1 你可以直接从一个Python列表或NumPy数组创建一个tensor&#xff1a;3.2 创建特定形状的tensor3.3 创建三维tensor3.4 使用随机数填充tensor3.5 指定tensor的数据类型 4.tensor基本运算…